Catalog
JUnit4的特性
JUnit4实战操作
JUnit4的特性
JUnit4 最大的特性是使用注解,很多实际的执行过程在JUnit的后台已经完成,而且test case (测试用例)不需要继承TestCase,
只需要在test case 的方法前加上@Test 注释即可。
每个测试类都需要导入最基本的2个测试包:
import static org.junit.Assert.*; import org.junit.Test;
第一个:静态导入断言包
第二个:导入Test注释包,如果用到其他的注释,如@Before,@After等,则需要导入相应的包,
也可以直接导入 import org.junit.*; " * " 代表包含了所有的注释。
第三个:测试方法对于名字没有任何要求,只要有@Test 就可以证明是一个测试方法,但是测试方
法不能有返回值,这个规定不能违反,否则在运行时会抛出异常。
即:在一个测试类中,所有被@Test注解所修饰的public,void方法都是test case,可以被JUnit所执行。
第四个:@Ignore 注释添加在一个测试方法上,表明这个测试方法被忽略,放在一个测试类上,表
明这个测试类中的所有测试方法都被忽略。
第五个:多个测试类放在一起执行
可以使用 org.junit.runner.JUnitCore.runClasses(TestClass1.class , TestClass2.class , ...).
利用这个把test case的类放进去,然后放在main()方法里面执行。
JUnit4实战操作
选中需要测试的类,点击右键,New 一个 JUnit Test Case。
序号1.测试类一般单独放在一个源文件夹Source folder。
序号2.测试类所在的包,一般和被测试的类所在的包同名。
序号3.测试的名称,默认是被测试的类的名称后面加上Test。
然后点击右下角的next,选择要测试的方法,最后finish。
简单的需要被测试的类 MathDemo
public class MathDemo { public int add(int a , int b){ return a+b; } public int div(int a , int b ){ return a/b; } }
对应的测试类 MathDemoTest
public class MathDemoTest { MathDemo demo; @Before public void setUp(){ System.out.println("Set up ..."); demo = new MathDemo(); } @After public void tearDown(){ System.out.println("Done..."); demo = null; } @Test public void testAdd() { int expetected = 1; int trueValue = demo.add(1, 1); //断言方法 assertEquals("你好像写错了",expetected, trueValue); } @Test public void testDiv() { int expected = 1; int trueValue = demo.div(1, 1); assertEquals(expected, trueValue); } }
在eclipse运行该测试用例
对上面测试用例截图分析:
- 大红色方框内容区域
- Errors 为 0 , 表示程序本身没有出错。一般出现Error错误时,说明是程序没有考虑到的情况,在断言前程序因为某种错误而终止。
- Failures 为1 , 说明有一个测试失败,预期的结果与实际运行单元的结果不一致导致失败。
- Failure 对应的状态 testAdd有个小×,成功的状态是绿色的√,还有一种状态是 忽略状态,
。
- 玫红色方框内容区域
- setUp()方法对应的注释是 @Before;在每个测试方法开始之前都会执行。
- tearDown() 方法对应的注释是 @After;在每个测试方法结束之后都会执行。
- 控制台Console中打印了两遍,说明在每个测试方法之前, 注释@Before和@After对应的方法都会执行一次。
- 蓝色方框区域内容
- 在测试方法时,可以使用很多断言方法,常用的断言介绍:
- assertEquals ([String message],Object target,Object result) target与result不相等,中断测试方法,输出message
- assertTrue/False ([String message],Boolean result) Result为 false/true,中断测试方法,输出message
- assertNotNull/Null ([String message],Obejct result) Retult= = null/result!=null,中断测试方法,输出message
- assertSame/NotSame (Object target,Object result) Traget与result 不指向/指向 同一内存地址(实例),中断测试方法,输出message
- assertThat ([String reason] , Object actual, Matcher<? super Object> matcher),用的是match的形式。
- fail ([String message]) 中断测试方法,输出message,Fail 让测试失败,并给出指定信息。
- 在测试方法时,可以使用很多断言方法,常用的断言介绍:
JUnit提供很多种Match,其中 CoreMatchers 是其中一个比较完善的实现类。所以可以从CoreMatchers类中查阅断言方法。