您现在的位置是:首页 > 文章详情

单元测试代码自动化生成解决方案

日期:2018-09-13点击:604

写在前面的话:

鄙人星云,今年六月份,刚到北京入职了一家国企,由于刚进项目对现有的项目业务还不是很熟悉,但是领导已经下了命令,要我给现有的项目写单元测试代码,项目比较大,业务还不熟悉,如果全部手写测试代码,必然是个累死人不偿命的事情。

那么有没有更好的解决方案呢?答案自然是肯定的。

解决方案:

通过查询资料得知,在码农界有这样一个Eclipse插件——CodePro Analytix,通过这个插件可以自动批量生成单元测试代码。

CodePro Analytix是一个基于Eclipse的快速开发环境,能够自动的完成重复的任务使Java开发者快速的开发出高质量的软件。能够保证代码质量,包括代码评审、metric、设计模式、测试,等等

使用指南:

  1. CodePro Analytix 插件下载
  2. 下载后解压到一个路径下,路径中最好不要有中文。
    解压后像这样:

image

  1. 打开你的Eclipse IDE

    我用的IDE是STS——Spring 官方推出的Eclipse发行版。
  2. Help------> Install new Software
    image

5.Work With: --------> add... ------->Local...
浏览找到刚才解压的路径
image
6.选中这三个选项,然后一步一步安装即可
image
7.安装完成后重启下你的Eclipse 即可。
8.修改配置

Windows------> Perference ——————Code Pro ------->JUnit ----->Generated Code
默认是这样的:

image

  1. 但是一般我们需要修改下才符合我们常规的使用
    image

10.最后选中项目中的源码文件或者源码文件夹或项目名,右键------>Code Pro Tools----->Generate Test Case即可
image
这样,批量的单元测试代码就生成了。

接下来讲解一些注意事项:

  1. 关于JUnit报initializationError的解决方法
<!-- https://mvnrepository.com/artifact/org.hamcrest/hamcrest-core --> <dependency> <groupId>org.hamcrest</groupId> <artifactId>hamcrest-core</artifactId> <version>1.3</version> <scope>test</scope> </dependency>

2.关于一些莫名奇妙无法处理的异常处理
比如莫名奇妙的空指针异常,可以在测试注解中添加这个值

 @Test(expected = java.lang.NullPointerException.class)

或者如果有其他的异常类似这个:

@Test(expected = org.apache.axiom.om.OMException.class) public void testSerialize_1() throws Exception { PostEvent fixture = new PostEvent(); fixture.setEventName(""); fixture.setEventData(""); fixture.localEventNameTracker = true; fixture.localEventDataTracker = true; QName parentQName = new QName(""); OMFactory factory = new OMLinkedListImplFactory(); MTOMAwareXMLStreamWriter xmlWriter = new MTOMAwareOMBuilder(); fixture.serialize(parentQName, factory, xmlWriter); // add additional test code here // An unexpected exception was thrown in user code while executing this test: // org.apache.axiom.om.OMException: localname can not be null or empty // at org.apache.axiom.om.impl.llom.OMElementImpl.<init>(OMElementImpl.java:135) // at org.apache.axiom.om.impl.llom.OMElementImpl.<init>(OMElementImpl.java:118) // at org.apache.axiom.om.impl.llom.factory.OMLinkedListImplFactory.createOMElement(OMLinkedListImplFactory.java:75) // at org.apache.axis2.databinding.utils.writer.MTOMAwareOMBuilder.writeStartElement(MTOMAwareOMBuilder.java:101) // at org.apache.axis2.databinding.utils.writer.MTOMAwareOMBuilder.writeStartElement(MTOMAwareOMBuilder.java:92) // at com.travelsky.dcsi.PostEvent.serialize(PostEvent.java:178) // at com.travelsky.dcsi.PostEvent.serialize(PostEvent.java:151) }

看到这样的信息就添加注解:

@Test(expected = org.apache.axis2.databinding.ADBException.class)
  1. 关于断言测试常用的几种用法:
//如果result不为空返回true测试通过 assertNotNull(result); //第一个参数是期待结果,第二个是实际的引用对象 assertEquals(true, result.hasNext()); //支持多种数据类型 assertEquals(2, result.next()); //期待结果是null 接受一个引用对象参数 assertNull(result)

本篇完~
交流即分享,分享才能进步! 不对之处,还请各位前辈多多指教。 by 星云 *

原文链接:https://yq.aliyun.com/articles/640198
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章