JavaMock批量生成GET SET方法单测覆盖率

@RunWith(MockitoJUnitRunner.class)
@Slf4j
public class PersonTest {

    @Test
    public void testPerson() {
        MockGetSetMethod(Person.class);
    }

    /**
     * @param tClass 需要生成覆盖率的实体类
     * @param <T>    泛型
     */
    public <T> void MockGetSetMethod(Class<T> tClass) {
        try {
            Object obj = tClass.newInstance();
            // 获取 obj 类的所有字段
            Field[] fields = tClass.getDeclaredFields();
            for (Field field : fields) {

                // 设置私有字段可访问
                field.setAccessible(true);
                // 反射调用get方法
                ReflectionTestUtils.invokeGetterMethod(obj, field.getName());

                //根据不同类型mockSet方法
                if (field.getType().equals(String.class)) {
                    // String类型
                    ReflectionTestUtils.invokeSetterMethod(obj, field.getName(), "String");
                } else if (field.getType().equals(Timestamp.class)) {

                    //Timestamp类型
                    ReflectionTestUtils.invokeSetterMethod(
                            obj, field.getName(), new Timestamp(System.currentTimeMillis()));
                } else if (field.getType().equals(Short.class)) {

                    //Shot类型
                    ReflectionTestUtils.invokeSetterMethod(
                            obj, field.getName(), Short.parseShort("1"));
                } else if (field.getType().equals(Integer.class)) {

                    //Integer类型
                    ReflectionTestUtils.invokeSetterMethod(
                            obj, field.getName(), Integer.valueOf(1));
                }

            }
        } catch (SecurityException | InstantiationException | IllegalAccessException e) {
            log.info(e.getMessage());
        }
    }
}

 

posted @ 2025-01-03 16:40  蜡笔小新DD  阅读(21)  评论(0)    收藏  举报