单元测试
1、“单元测试”主要是为“集成测试”做准备。
2、单元测试属于测试程序、测试代码、测试代码的逻辑等,属于白盒测试。(功能性测试属于黑盒测试)
3、多数企业中,要求程序员自己进行单元测试。有一些团队可能要求程序员还要编写单元测试报告。
单元测试报告中会描述什么信息?
什么时间
测试的哪个类的哪个方法
测试该方法的时候实参是什么
该方法执行结束之后的实际结果是什么
你的预期结果是什么
实际结果与预期结果是否一致
测试是否通过了
测试没有通过的原因是什么
怎么解决的等....
4、单元测试是java程序员必须掌握的内容,非常重要,自己对自己编写的业务程序进行测试,是一种负责人的表现。
自己必须保证自己所编写的程序是有效的。
5、在java编程中单元测试有专门的/专业的组件/框架/工具,它的名字叫做:junit,我们这里使用的是junit4版本。(这是一个较高的版本)
6、思考:在没有junit框架之前,我们程序员是怎么进行单元测试的呢?
编写测试程序,提供一个main方法,new对象,调用方法,传参数,查看返回结果。
这种方式测试不方便。会编写非常多的main方法。测试类会很多。并且最终不能批量的执行所有的测试程序。
假设有10个service类,一个service类当中有10个方法,则需要编写100个main方法进行测试。
可以让100个main方法同时执行吗?不能的。
100个业务方法对应100个main方法,一个java类中只能写一个main方法。最终是100个类。
会导致“类爆炸”(类太多了)。
7、单元测试主要测试什么?
不是测试控制器Controller(控制器的执行需要依赖Servlet api,离不开Tomcat这种web服务器,所以控制器不方便进行单元测试。)
也不是测试DAO(DAO中的每一个方法和事务不关联。没必要测试。)
单元测试主要测试的service类当中的每一个业务方法。(一个业务方法对应一个功能,对应一个事务!)
8、java中的单元测试主要写什么?
一个service类对应一个“测试用例”,一个测试用例实际上就是一个专门负责测试的类(专业术语:test case)
也就是说一个service类对应一个test case。
一个service方法对应一个“测试方法”。10个service方法则必须对应10个“测试方法”。
“测试用例Test Case”当中编写“测试方法”。
service类{
service方法
}
test case{
测试方法
}
单元测试主要编写的是:
测试用例 + 测试方法。
9、单元测试的实现步骤:
第一步:引入junit4的jar包。(java unit : java的单元测试)
hamcrest-core-1.3.jar
junit-4.12.jar
第二步:编写测试用例
* 在项目当中创建一个"Source Folder【专门存储java源文件的目录】",起名:test,和src同级目录。
* 新建一个软件包,这个包的名字要和被测试的service实现类包名一致。
* 编写一个“测试用例”类:
注意:测试用例的类名是被测试的目标类的类名添加Test结尾。
目标类:MathServiceImpl
测试用例:MathServiceImplTest
第三步:在测试用例当中编写测试方法
* 编写测试方法,测试方法必须按照以下格式:
@Test
public void testXxx(){
}
第四步:使用断言机制来判断程序是否有效。
* 在测试当中大多数情况下都会使用断言机制。
* 什么是断言机制?Assert.assertEquals(expected, actual);
程序有一个实际的运行结果:实际值
程序执行之前测试人员应该有一个预期结果:预期值
实际值和预期值对比,当相同的时候,或者不同的时候,这个过程称为断言机制。
在测试的时候,有的执行结果没有返回值怎么办?或者返回了一个List集合怎么办?或者返回了一个java对象怎么办?
不是所有的测试都能够使用断言机制,因为不是所有的方法都有返回值的。
有的时候需要在测试报告中体现出几张图片,是测试的时候截的图。
javaEE基础回顾之单元测试
最新推荐文章于 2023-05-21 22:59:12 发布