使用方法
pom.xml 文件引入依赖:
<dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version></dependency>
创建测试用例,新建一个测试类 JUnitTestLearn、测试方法 test01 上面增加注解 @org.junit.Test:
public class JUnitTestLearn {@Testpublic 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 {@BeforeClasspublic static void beforeClass() {System.out.println("before class");}@AfterClasspublic static void afterClass() {System.out.println("after class");}@Beforepublic void before() {System.out.println("before");}@Afterpublic void after() {System.out.println("after");}@Testpublic void test01() {System.out.println("test01");}@Testpublic void test02() {System.out.println("test02");}}
运行结果:
before classbeforetest01afterbeforetest02afterafter class
通过观察上方的运行结果得出结论:
- @BeforeClass 只执行一次,并且最先执行
- @AfterClass 只执行一次,并且最后执行
- @Before 在每个 @Test 方法之前执行一次
- @After 在每个 @Test 方法之后执行一次
测试套件
有时我们想一次性执行多个测试类,如果要手动一个个点击运行会比较烦琐。
测试套件可以将多个测试类合并。在 JUnit 中,@RunWith 和 @Suite 注释用来完成套件测试。
创建 JUnitTest1 类:
import org.junit.Test;public class JUnitTest1 {@Testpublic void test01() {System.out.println("JUnitTest1->test01");}}
创建 JUnitTest2 类:
import org.junit.Test;public class JUnitTest2 {@Testpublic 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->test01JUnitTest2->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 关键字抛出的异常类型一致。

