使用方法
pom.xml 文件引入依赖:
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
创建测试用例,新建一个测试类 JUnitTestLearn、测试方法 test01 上面增加注解 @org.junit.Test:
public class JUnitTestLearn {
@Test
public void test01() {
System.out.println("hello JUnit");
}
}
@Before和@After运行流程
JUnit 中的方法执行过程,即哪一个方法首先被调用,哪一个方法在一个方法之后调用。以下为 JUnit 测试方法的 API,并且会用例子来说明。
创建测试:
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
public class JUnitTestLearn {
@BeforeClass
public static void beforeClass() {
System.out.println("before class");
}
@AfterClass
public static void afterClass() {
System.out.println("after class");
}
@Before
public void before() {
System.out.println("before");
}
@After
public void after() {
System.out.println("after");
}
@Test
public void test01() {
System.out.println("test01");
}
@Test
public void test02() {
System.out.println("test02");
}
}
运行结果:
before class
before
test01
after
before
test02
after
after class
通过观察上方的运行结果得出结论:
- @BeforeClass 只执行一次,并且最先执行
- @AfterClass 只执行一次,并且最后执行
- @Before 在每个 @Test 方法之前执行一次
- @After 在每个 @Test 方法之后执行一次
测试套件
有时我们想一次性执行多个测试类,如果要手动一个个点击运行会比较烦琐。
测试套件可以将多个测试类合并。在 JUnit 中,@RunWith 和 @Suite 注释用来完成套件测试。
创建 JUnitTest1 类:
import org.junit.Test;
public class JUnitTest1 {
@Test
public void test01() {
System.out.println("JUnitTest1->test01");
}
}
创建 JUnitTest2 类:
import org.junit.Test;
public class JUnitTest2 {
@Test
public void test01() {
System.out.println("JUnitTest2->test01");
}
}
创建 JUnitTestSuite 类,把多个测试类整合在一起:
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
@RunWith(Suite.class)
@Suite.SuiteClasses({
JUnitTest1.class,
JUnitTest2.class
})
public class JUnitTestSuite {
}
点击 JUnitTestSuite 左边三角形箭头即可运行多个测试类:
运行结果:
JUnitTest1->test01
JUnitTest2->test01
注解总结
@Test:这个注释说明依附在 JUnit 的 public void 方法可以作为一个测试案例。
@Test(expected=Xxx.class):expected 参数表示我们期望会出现什么异常。
@Test(timeout=毫秒):timeout 参数表示我们期望测试在 n 毫秒内运行完成。
@Before:会在每个测试用例开始之前执行一次。
@After:会在每个测试用例结束之后执行一次。
@Ingnore:这个注释是用来忽略有关不需要执行的方法。
@BeforeClass:会在所有用例开始之前执行。
@AfterClass:会在所有用例结束后执行。
@RunWith:测试套件,用于整合多个测试类。
@Suite.SuiteClasses:与@RunWith 一起使用,声明要整合的测试类。
Assert类
org.junit.Assert 下提供了许多断言方法:
如果不符合断言预期,将抛出 java.lang.AssertionError 异常,该异常类型与 Java 自带 assert 关键字抛出的异常类型一致。