名称解释
单元测试(unit testing)
是指对软件中的最小可测试单元进行检查和验证。对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,Java里单元指一个类。单元就是人为规定的最小的被测功能模块。单元测试是在软件开发过程中要进行的最低级别的测试活动,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。
模拟测试(mock testing)
就是在测试过程中,对于某些不容易构造或者不容易获取的对象,用一个虚拟的对象来创建以便测试的测试方法。
相关技术介绍
JUnit
是一个Java语言的单元测试框架。Junit测试是程序员测试,即所谓白盒测试,因为程序员知道被测试的软件如何(How)完成功能和完成什么样(What)的功能。Junit是一套框架,继承TestCase类,就可以用Junit进行自动测试了。
JMockit
JMockit 是用以帮助开发人员编写测试程序的一组工具和API,该项目完全基于 Java 5 SE 的 java.lang.instrument 包开发,内部使用 ASM 库来修改Java的Bytecode。所以他能解决当测试的代码包含了一些静态方法,未实现方法,未实现接口的问题。
ASM 是一个 Java 字节码操控框架。它能被用来动态生成类或者增强既有类的功能。
Jmock,Mockit,EasyMock,Unitils Mock
介绍略,有兴趣可自行搜索
Junit使用
在idea中,需要安装junit插件,具体安装及运行junit的方法参考:
https://jingyan.baidu.com/article/f7ff0bfccd661d2e26bb131a.html
然后在项目中引入jar包。
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
demo类:
public class Calculate {
public int add(int a, int b) {
return a + b;
}
public int subtract(int a, int b) {
return a - b;
}
}
其测试类:
public class CalculateTest {
private static Calculate calculate = null;
@BeforeClass
public static void beforeClass() {
System.out.println("------------------------BeforeClass------------------------");
calculate = new Calculate();
}
@AfterClass
public static void afterClass() {
System.out.println("------------------------AfterClass------------------------");
calculate = null;
}
@Before
public void setUp() throws Exception {
System.out.println("-------Before Method-------");
}
@After
public void tearDown() throws Exception {
System.out.println("-------After Method-------");
}
@Test
public void add() throws Exception {
assertEquals(10, calculate.add(7, 3));
}
@Test
public void subtract() throws Exception {
assertEquals(4, calculate.subtract(7, 3));
}
}
在测试类中右击鼠标选择Run即可执行Junit单元测试了。结果:
如果要运行多个测试类,那么在测试包上右键,点击右键菜单中的”run Tests in <包名>”即可。
注意事项:
1、测试方法上面必须使用@Test注解进行修饰。
2、测试方法必须使用public void 进行修饰,不能带有任何参数。
3、新建一个源代码目录用来存放测试代码。
4、测试类的包应该与被测试类的包保持一致。
5、测试单元中的每一个方法必须独立测试,每个测试方法之间不能有依赖。<