JUnit测试,即单元测试,学会它的简单使用,这是作为一个Java后端程序员应该有的职业素养。
JUnit测试中要注意的几个注解
在JUnit测试中,你需要注意以下几个注解。
为了给大家演示JUnit测试中以上注解的使用,我首先定义出一个Person类。
package cn.liayun.juint;
public class Person {
public void run() {
System.out.println("run!!");
}
public void eat() {
System.out.println("eat!!");
}
}
接下来,再定义一个Person类的测试类:
package cn.liayun.juint;
import org.JUnit.After;
import org.JUnit.Before;
import org.JUnit.Test;
//Person类的测试类
public class PersonTest {
private Person p;
@Before
public void before() {//方法名是什么无所谓
System.out.println("before"); // 测试方法之前,提前初始化一些资源
p = new Person();
}
@Test
public void testRun() {
p.run();
}
@Test
public void testEat() {
p.eat();
}
@After
public void after() {//方法名是什么无所谓
System.out.println("after"); // 测试方法完了之后需要释放一些资源
p = null;
}
}
小伙伴们,那该如何进行测试呢?很简单的,选中需要测试的方法或将光标移到其上,右键→Run As→Juint Test即可,如下:
此时若在Juint视图中显示绿条(如下图),即代表测试通过,若显示为红条,即代表测试不通过。
那么,如果要运行该类中所有的测试方法,又该怎么办呢?可选中该类或将光标移到其上,右键→Run As→Juint Test即可。运行结果为,
从上面的运行结果来看,@Before注解在跑每一个测试用例的时候都会执行一次@Before部分的代码,同理,@After注解对于每一个测试用例都要执行一次。
我们再来观察以下代码,与上面的代码有何区别?
package cn.liayun.juint;
import org.JUnit.AfterClass;
import org.JUnit.BeforeClass;
import org.JUnit.Test;
//Person类的测试类
public class PersonTest2 {
@BeforeClass
public static void beforeClass() {//该方法在类加载的时候运行
System.out.println("beforeClass");
}
@Test
public void testRun() {
Person p = new Person();
p.run();
}
@Test
public void testEat() {
Person p = new Person();
p.eat();
}
@AfterClass
public static void afterClass() {
System.out.println("afterClass");
}
}
大家可以试着运行该类中所有的测试方法,那么结果就是:
从上面的运行结果来看,@Beforeclass注解在类中只会被执行一次,@Afterclass注解在所有测试用例执行完才执行一次。
知道了在JUnit测试中需要注意的几个注解之后,可以得出结论:
- 一个JUnit4的单元测试用例执行顺序为:
- 每一个测试方法的调用顺序为:
断言
首先简单介绍一下断言,用大白话说,断言就是判断某个东西是否是你想要的。
为了演示断言,修改Person类的描述为:
package cn.liayun.juint;
public class Person {
public String run() {
System.out.println("run!!");
return "1";
}
public void eat() {
System.out.println("eat!!");
}
}
接下来,再定义一个Person类的测试类:
当然,断言的方法还有很多很多,如: