1. 引入Junit4的Maven依赖
<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> </dependencies>
2. Junit中的常用注解
- @BeforeClass – 针对所有测试,只执行一次,且必须为static void,在类中的任意public static void方法执行之前执行
- @Before – 初始化方法 对于每一个测试方法都要执行一次,在任意使用@Test注解标注的public void方法执行之前执行(注意与BeforeClass区别,后者是对于所有方法执行一次)。
- @Test – 使用该注解标注的public void方法会表示为一个测试方法,可以添加测试期望异常和超时时间。例如:@Test(expected=ArithmeticException.class)检查被测方法是否抛出ArithmeticException异常
- @Ignore:忽略的测试方法
- @After – 释放资源 对于每一个测试方法都要执行一次,在任意使用@Test注解标注的public void方法执行之后执行(注意与AfterClass区别,后者是对于所有方法执行一次)
- @AfterClass – 针对所有测试,只执行一次,且必须为static void, 在类中的任意public static void方法执行之后执行
一个JUnit4的单元测试用例执行顺序为:
@BeforeClass -> @Before -> @Test -> @After -> @AfterClass
3. 使用示例:
import org.junit.After; import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; public class Junit4Demo { // Run once, e.g. Database connection, connection pool @BeforeClass public static void runOnceBeforeClass() { System.out.println("@BeforeClass - runOnceBeforeClass"); } // Run once, e.g close connection, cleanup @AfterClass public static void runOnceAfterClass() { System.out.println("@AfterClass - runOnceAfterClass"); } // Should rename to @BeforeTestMethod // e.g. Creating an similar object and share for all @Test @Before public void runBeforeTestMethod() { System.out.println("@Before - runBeforeTestMethod"); } // Should rename to @AfterTestMethod @After public void runAfterTestMethod() { System.out.println("@After - runAfterTestMethod"); } @Test public void test_method_1() { System.out.println("@Test - test_method_1"); } @Test public void test_method_2() { System.out.println("@Test - test_method_2"); } }
输出:
@BeforeClass - runOnceBeforeClass @Before - runBeforeTestMethod @Test - test_method_1 @After - runAfterTestMethod @Before - runBeforeTestMethod @Test - test_method_2 @After - runAfterTestMethod @AfterClass - runOnceAfterClass