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));
}
}
[email protected]: 测试方法,在这里可以测试期望异常和超时时间
a)(expected=XXException.class)如果程序的异常和XXException.class一样,则测试通过
b)(timeout=100)如果程序的执行能在100毫秒之内完成,则测试通过
[email protected]: 被忽略的测试方法:加上之后,暂时不运行此段代码
[email protected]:初始化方法, 每一个测试方法之前运行
[email protected]: 释放资源,每一个测试方法之后运行
[email protected]: 方法必须必须要是静态方法(static 声明),所有测试开始之前运行,注意区分before,是所有测试方法
[email protected]: 方法必须要是静态方法(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作为方法名的前缀(不是必须)