日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

JAVA反射--通过反射对pojo进行UT覆盖率测试

發(fā)布時(shí)間:2023/12/14 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JAVA反射--通过反射对pojo进行UT覆盖率测试 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

最近一直寫UT單元測(cè)試,一般pojo通過程序調(diào)用,要測(cè)試pojo,直接測(cè)試action或者service就可以,但是難免還是有些pojo覆蓋不到。但是上司又一直催要覆蓋率,所以只能硬著頭皮提升pojo的覆蓋率。

下面是通過反射的方式實(shí)現(xiàn)的pojo覆蓋率測(cè)試,如下是pojo類,基本上包括了各種數(shù)據(jù)類型,如8中基本數(shù)據(jù)類型及其包裝類型,引用類型等。

?

/** * @Description: 該pojo用于通過反射進(jìn)行UT覆蓋率測(cè)試 */ public class TestPojo {//8種基本數(shù)據(jù)類型,及其包裝類型private byte b1;private Byte b2;private short s1;private Short s2;private int i1;private Integer i2;private float f1;private Float f2;private double d1;private Double d2;private long l1;private Long l2;private char c1;private Character c2;private boolean boo1;private Boolean boo2;//引用類型private String str1;private Date date1;private File file1;private List<?> list1;private Map<?, ?> map1;private Set<?> set1; private List<?>[] lists;private Map<?, ?>[] maps;private Set<?>[] sets;private Object object;private static Logger logger = LoggerFactory.getLogger(TestPojo.class);public Object getObject() {return object;}public void setObject(Object object) {this.object = object;}public byte getB1() {return b1;}public void setB1(byte b1) {this.b1 = b1;}public Byte getB2() {return b2;}public void setB2(Byte b2) {this.b2 = b2;}public short getS1() {return s1;}public void setS1(short s1) {this.s1 = s1;}public Short getS2() {return s2;}public void setS2(Short s2) {this.s2 = s2;}public int getI1() {return i1;}public void setI1(int i1) {this.i1 = i1;}public Integer getI2() {return i2;}public void setI2(Integer i2) {this.i2 = i2;}public float getF1() {return f1;}public void setF1(float f1) {this.f1 = f1;}public Float getF2() {return f2;}public void setF2(Float f2) {this.f2 = f2;}public double getD1() {return d1;}public void setD1(double d1) {this.d1 = d1;}public Double getD2() {return d2;}public void setD2(Double d2) {this.d2 = d2;}public long getL1() {return l1;}public void setL1(long l1) {this.l1 = l1;}public Long getL2() {return l2;}public void setL2(Long l2) {this.l2 = l2;}public char getC1() {return c1;}public void setC1(char c1) {this.c1 = c1;}public Character getC2() {return c2;}public void setC2(Character c2) {this.c2 = c2;}public boolean isBoo1() {return boo1;}public void setBoo1(boolean boo1) {this.boo1 = boo1;}public Boolean getBoo2() {return boo2;}public void setBoo2(Boolean boo2) {this.boo2 = boo2;}public String getStr1() {return str1;}public void setStr1(String str1) {this.str1 = str1;}public Date getDate1() {return date1;}public void setDate1(Date date1) {this.date1 = date1;}public File getFile1() {return file1;}public void setFile1(File file1) {this.file1 = file1;}public List<?> getList1() {return list1;}public void setList1(List<?> list1) {this.list1 = list1;}public Map<?, ?> getMap1() {return map1;}public void setMap1(Map<?, ?> map1) {this.map1 = map1;}public Set<?> getSet1() {return set1;}public void setSet1(Set<?> set1) {this.set1 = set1;}public List<?>[] getLists() {return lists;}public void setLists(List<?>[] lists) {this.lists = lists;}public Map<?, ?>[] getMaps() {return maps;}public void setMaps(Map<?, ?>[] maps) {this.maps = maps;}public Set<?>[] getSets() {return sets;}public void setSets(Set<?>[] sets) {this.sets = sets;} }

?

?

以下是測(cè)試類,用于測(cè)試上面的pojo,其主要思想:

?

/*** 1.根據(jù)Class.forName找到類* 2.通過clz.getDeclaredFields()獲取類的所有屬性,遍歷,獲取每個(gè)屬性的名字和類型* 3.因?yàn)閜ojo類字段是private私有屬性,所以設(shè)置可訪問* 4.將屬性name首字母變成大寫,便于構(gòu)建setXX和getXX方法* 5.構(gòu)建setXX和getXX方法* 6.執(zhí)行方法,用get方法給set方法賦值*/

?

?

?

/** * @Description: 該方法僅適用于單個(gè)類*/ public class Test {@Testpublic void test() throws ClassNotFoundException, InstantiationException, IllegalAccessException, NoSuchMethodException, SecurityException, IllegalArgumentException, InvocationTargetException {//1.根據(jù)Class.forName找到類Class<?> clz = Class.forName("com.cmread.cmu.portal.web.TestPojo");Object object = clz.newInstance();String name = "";String type = "";//2.通過clz.getDeclaredFields()獲取類的所有屬性,遍歷,獲取每個(gè)屬性的名字和類型for (Field field : clz.getDeclaredFields()) {//3.因?yàn)閜ojo類字段是private私有屬性,所以設(shè)置可訪問field.setAccessible(true);//4.將屬性name首字母變成大寫,便于構(gòu)建setXX和getXX方法name = StringUtils.capitalize(field.getName());type = field.getGenericType().toString();if (name.equals("$jacocoData") || type.equals("interface org.slf4j.Logger")) {continue;}//5.構(gòu)建setXX和getXX方法,clz2為set方法的參數(shù)類型Class<?> clz2 = field.getType();Method setMethod = clz.getDeclaredMethod("set" + name,clz2);String getMethodName = "get" + name;if (type.equals("boolean")) {getMethodName = "is" + name;}Method getMethod = clz.getDeclaredMethod(getMethodName);//6.執(zhí)行方法,用get方法給set方法賦值setMethod.invoke(object, getMethod.invoke(object));} } }


覆蓋率如下:

?

?

?

?

以上test()方法目前只能用于測(cè)試單個(gè)pojo類,運(yùn)行該方法覆蓋率幾乎可以100%。(覆蓋率測(cè)試工具Eclemma:http://update.eclemma.org/,是eclipse的插件,可自行下載)

?

總結(jié)

以上是生活随笔為你收集整理的JAVA反射--通过反射对pojo进行UT覆盖率测试的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 37p粉嫩大胆色噜噜噜 | a级片在线看 | 欧美在线一二三区 | 可以免费看的黄色网址 | 玉米地疯狂的吸允她的奶视频 | 欧美成人h版 | 久久久久亚洲av无码专区桃色 | 亚洲a人| 色婷婷精品国产一区二区三区 | 日韩avwww| 久艹伊人 | 日韩中文字幕在线不卡 | 椎名由奈在线观看 | 性激烈视频在线观看 | 国产一区二区不卡在线 | 久久久成人免费视频 | 亚洲综合免费观看高清完整版在线 | 久久精品视频网站 | 国产黄色在线 | 成人无码视频 | h部分肌肉警猛淫文 | 久久资源av| 山村大伦淫第1部分阅读小说 | 狠狠躁日日躁夜夜躁 | 亚洲一道本 | 欧美专区 日韩专区 | 色综合久久久久久久 | 亚洲性图视频 | 啪啪的网站 | 天堂资源网 | 伊人久久久久久久久久 | 久久bb | 老司机激情视频 | jizz性欧美15| av一区二 | 免费黄色片子 | 99re这里有精品 | 国产一区二区片 | 人人搞人人干 | 久操网站| 国产欧美日韩专区发布 | 麻豆传媒观看 | 日韩草比 | 91久久精品美女高潮 | 五月婷婷视频 | 少妇一区二区视频 | 国产视频精品视频 | 亚洲精品国产精品乱码不卡 | 中国国语农村大片 | 日本a视频| 欧美极品videos精品 | 清纯唯美亚洲综合 | 中文字幕精品久久 | 免费在线观看日韩 | 国产色视频一区二区三区qq号 | 最近的中文字幕在线看视频 | 奶水旺盛的少妇在线播放 | 男人天堂怡红院 | 大地资源在线观看免费高清版粤语 | www.五月.com | 欧美日日操 | av久热 | 91精品国产欧美一区二区 | 大尺度做爰呻吟舌吻情头 | 亚洲自拍偷拍网站 | 女人叉开腿让男人桶 | 亚洲一区h | 色在线网站| 国产精品嫩 | 一区二区视频在线 | 99re最新 | 视频黄页在线观看 | 欧美视频一区二区在线观看 | 国产成人精品午夜福利Av免费 | 日韩黄色av网站 | 国产精品无码人妻一区二区在线 | 欧美熟妇精品久久久久久 | 亚洲欧美激情在线 | 国产欧美日韩精品一区二区三区 | 香蕉综合在线 | 成人无遮挡 | 五月婷婷一区二区 | 久久综合色鬼 | 精品视频久久久久 | 粉嫩av一区二区三区免费观看 | 福利电影一区 | 成人综合av | 天天干夜夜欢 | 好吊色欧美一区二区三区视频 | 中文字幕在线观看精品 | 国产精品久久久久久久久久直播 | 一区二区 中文字幕 | 成年人免费av | 曰韩毛片 | 日本一区二区免费在线 | 久久久久无码精品国产 | 成人a视频 | a天堂在线视频 | 午夜精品一二三区 |