Junit4基本使用:环境搭建,测试类生成,测试类执行,注意事项等总结
在eclipse项目中添加Junit4
(注:右击选中的project-》build path-》add libraries-》选中junit,next直到finish)
右击你的项目—->点击build path下面的configuare build path
—->出现一个框如下:
按照上面的一二步找到要添加的library,接下来就是找到Junit一直next
Junit使用
编写被测试类
package com.sccba.portal; public class Junit4 { public void test1(){ System.out.println("this is test1"); } public boolean test2(){ System.out.println("this is test2"); return false; } public int test3(){ System.out.println("this is test3"); return -1; } public int test4(int a,int b){ System.out.println("this is test4"); return a=b; } }
右键被测试类(或者包)>new>JUnit Test Case
选择要测试的方法
package com.sccba.portal; import org.junit.Assert; import org.junit.After; import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; public class Junit4Test { @BeforeClass public static void setUpBeforeClass() throws Exception { System.out.println("this is BeforeClass"); } @AfterClass public static void tearDownAfterClass() throws Exception { System.out.println("this is AfterClass"); } @Before public void setUp() throws Exception { System.out.println("this is Before"); } @After public void tearDown() throws Exception { System.out.println("this is After"); } @Test public void testTest1() { Junit4 junit=new Junit4(); junit.test1(); } @Test public void testTest2() { Junit4 junit=new Junit4(); Assert.assertFalse(junit.test2()); //test2方法返回false,所以测试也通过 } @Test public void testTest3() { Junit4 junit=new Junit4(); Assert.assertEquals(-1,junit.test3());//测试test3方法的返回值,后面为真实值,前面为期望值,这里返回-1,测试也通过 } @Test public void testTest4() { Junit4 junit=new Junit4(); Assert.assertEquals(6,junit.test4(1,5)); } }
1.@Test: 测试方法,在这里可以测试期望异常和超时时间
a)(expected=XXException.class)如果程序的异常和XXException.class一样,则测试通过
b)(timeout=100)如果程序的执行能在100毫秒之内完成,则测试通过
2.@Ignore: 被忽略的测试方法:加上之后,暂时不运行此段代码
3.@Before:初始化方法, 每一个测试方法之前运行
4.@After: 释放资源,每一个测试方法之后运行
5.@BeforeClass: 方法必须必须要是静态方法(static 声明),所有测试开始之前运行,注意区分before,是所有测试方法
6.@AfterClass: 方法必须要是静态方法(static 声明),所有测试结束之后运行,注意区分 @After
一个JUnit4 的单元测试用例执行顺序为:
@BeforeClass –> @Before –> @Test –> @After –> @AfterClass
每一个测试方法的调用顺序为:
@Before –> @Test –> @After
常用断言
- assertEquals(expected, actual)
验证expected的值跟actual是一样的,如果是一样的话,测试通过,不然的话,测试失败。如果传入的是object,那么这里的对比用的是equals() - assertNotEquals(unexpected, actual)
验证期望值与实际值不相等。 - assertTrue(boolean condition)
验证contidion的值是true - assertFalse(boolean condition)
验证contidion的值是false - assertNull(Object obj)
验证obj的值是null - assertNotNull(Object obj)
验证obj的值不是null - assertSame(expected, actual)
验证expected和actual是同一个对象,即指向同一个对象 - assertNotSame(expected, actual)
验证expected和actual不是同一个对象,即指向不同的对象 - Assert.fail()
让测试方法失败
注:Assert(断言)警告
如下图
原因:
注:Assert断言可以通过测试类集成TestCase类实现
测试类执行:
右键测试类>Run As>JUnit Test
结果:
(Failures一般是由测试方法中断言引起,这表示测试点出现了问题,证明被测试的方法返回的结果与我们预期的不一样
Errors一般是由被测试方法或者是测试方法中存在异常导致。)
状态条为绿色三个方法全部测试成功
如果对整个项目进行单元测试,控制台只会输出添加了@Test注解的方法的结果,说明只有添加了@Test注解的方法才会被JUnit测试。
此外,不是所有方法都适合用JUnit进行测试,JUnit对所测试的方法有一定的要求:
注意:编写测试类的原则:
①测试方法上必须使用@Test进行修饰
②测试方法必须使用public void 进行修饰,不能带任何的参数
③新建一个源代码目录来存放我们的测试代码,即将测试代码和项目业务代码分开
④测试类所在的包名应该和被测试类所在的包名保持一致
⑤测试单元中的每个方法必须可以独立测试,测试方法间不能有任何的依赖
⑥测试类使用Test作为类名的后缀(不是必须)
⑦测试方法使用test作为方法名的前缀(不是必须)