单元测试
1 .前言
在日常开发中,我们编写的所有代码都需要经过严格的测试才能发布。 传统的测试方法创建main函数进行简单测试,并使用大量的print语句输出结果。 这种方法实际上是不可取的。 这将导致程序内存在大量冗馀代码,不利于维护。 因此,业界提出了单元测试的概念。 单元测试是指检查和验证软件中的最小可测试性。 (最小单元可以是方法或类,根据具体场景定义。 java通常使用Junit工具进行。
2 .使用
将下载的Junit的jar文件导入项目即可。 然后可以创建单元测试类。 测试类也有相应的命名约定。 通常被命名为XxxTest。 Xxx是要测试的类名。 测试类中描述的测试方法是不需要返回值。 测试方法名称规范testXxx (,Xxx表示目标类中的方法名称。
2.1 Junit评论
评论
说明
@Test
书写方法表明当前方法是测试方法
@Before
标记该方法,并在运行任何单元测试之前运行的方法
@After
书写方法用于在运行任何单元测试后运行的方法
@BeforeClass
注释是静态方法,在测试方法之前运行它,然后运行一次。 通常可用于初始化操作
@AfterClass
注释是静态方法,在测试方法之前运行它,然后运行一次。 通常可用于初始化操作
@Ignore
书写方法表示忽略当前的这种方法
示例:
公共类别用户数据列表{
@ beforeclasspublicstaticvoidbefore1(
system.out.println(before1);
}
@ afterclasspublicstaticvoidafter1(
system.out.println(after1);
}
@Beforepublic voidbefore2() {
system.out.println(before2);
}
@Afterpublic voidafter2() {
system.out.println(after2);
}
@Testpublic voidtestSaveUser () {
UserDao dao=newUserDao (;
dao.saveUser (;
}
@Test//@Ignore//忽略当前的此方法
公共语音识别
UserDao dao=newUserDao (;
dao.findUserById (;
}
}
2.2使用断言(资产)。
断言是指将预期条件或表达式参与测试,并确定测试结果是否达到预期结果。
示例:
import edu.nf.service.userservice; importorg.junit.Test; //使用静态导入(正在导入某个静态方法)
导入静态org.JUnit.assert.*;
公共群集服务测试{
@ testpublicvoidtestfindusername () {
userserviceservice=newuserservice (; 使用//断言的测试//第一个参数是此预期结果,第二个参数是目标方法的返回值//如果两个值相等,则测试通过
资产质量(' hh ',service.findusername ) ) 1001 );
}
}
Assert类提供了许多Assert方法进行比较。 这些方法的所有返回值都是void,如果判定结果失败,则会抛出相应的异常信息。 断言方法如下
方法
说明
资产质量
判定两个值是否相等
资产not null
判定结果不允许为空
资产空值
判定结果为空
assertSame
确定两个对象是否为同一引用
assertArrayEquals
判定两个数组的内容是否相等
.
.
2.3测试套件
测试套件是指将一系列单元测试类集中在一起进行的单元测试。
测试工具包所需的注释:
评论
说明
@RunWith
如果对类进行注释,则表示当前类是测试套件的执行功能
@SuiteClasses
用于在类上集中所有单元测试类的类class
示例:
@runwith(suite.class ) )。
@ suite.suite classes ({ userdao test.class,UserServiceTest.class} )公共classuitetest { )。
}