写在前面的话:
鄙人星云,今年六月份,刚到北京入职了一家国企,由于刚进项目对现有的项目业务还不是很熟悉,但是领导已经下了命令,要我给现有的项目写单元测试代码,项目比较大,业务还不熟悉,如果全部手写测试代码,必然是个累死人不偿命的事情。
那么有没有更好的解决方案呢?答案自然是肯定的。
解决方案:
通过查询资料得知,在码农界有这样一个Eclipse插件——CodePro Analytix,通过这个插件可以自动批量生成单元测试代码。
CodePro Analytix是一个基于Eclipse的快速开发环境,能够自动的完成重复的任务使Java开发者快速的开发出高质量的软件。能够保证代码质量,包括代码评审、metric、设计模式、测试,等等
使用指南:
- CodePro Analytix 插件下载
- 下载后解压到一个路径下,路径中最好不要有中文。
解压后像这样:
-
打开你的Eclipse IDE
我用的IDE是STS——Spring 官方推出的Eclipse发行版。
- Help------> Install new Software
5.Work With: --------> add... ------->Local...
浏览找到刚才解压的路径
6.选中这三个选项,然后一步一步安装即可
7.安装完成后重启下你的Eclipse 即可。
8.修改配置
Windows------> Perference ——————Code Pro ------->JUnit ----->Generated Code
默认是这样的:
- 但是一般我们需要修改下才符合我们常规的使用
10.最后选中项目中的源码文件或者源码文件夹或项目名,右键------>Code Pro Tools----->Generate Test Case即可
这样,批量的单元测试代码就生成了。
接下来讲解一些注意事项:
- 关于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)
- 关于断言测试常用的几种用法:
//如果result不为空返回true测试通过
assertNotNull(result);
//第一个参数是期待结果,第二个是实际的引用对象
assertEquals(true, result.hasNext());
//支持多种数据类型
assertEquals(2, result.next());
//期待结果是null 接受一个引用对象参数
assertNull(result)
本篇完~
交流即分享,分享才能进步! 不对之处,还请各位前辈多多指教。 by 星云 *