在学习zookeeper中偶然接触到了 Junit 中除了@Test 外的用法,特此转载记录
原文地址:Junit 实例精讲基础教程(一) 认识Junit基本注解@Before、@After、@Test、@BeforeClass、@AfterClass
- Junit官网:http://junit.org/junit4/
- 关于Junit,官文甚至不做过多解释:Junit只是一个用于单元测试的小框架,是基于xUnit架构的一个实现。
- 更多精彩请阅读 东陆之滇的csdn博客:http://blog.csdn.net/zixiao217
- 系列教程基于Maven。
-
引入Junit依赖
贴士:Junit捆绑了一个<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> </dependencies>
hamcrest-core
的类库,查看依赖树可以看到:
如果你要使用dependency:tree ... [INFO] \- junit:junit:jar:4.12:test [INFO] \- org.hamcrest:hamcrest-core:jar:1.3:test
hamcrest-core
的其他版本,可以过滤掉hamcrest-core
:<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> <exclusions> <exclusion> <groupId>org.hamcrest</groupId> <artifactId>hamcrest-core</artifactId> </exclusion> </exclusions> </dependency> <!-- This will get hamcrest-core automatically <dependency> <groupId>org.hamcrest</groupId> <artifactId>hamcrest-library</artifactId> <version>1.3</version> <scope>test</scope> </dependency> --> <!-- https://mvnrepository.com/artifact/org.hamcrest/hamcrest-library --> <dependency> <groupId>org.hamcrest</groupId> <artifactId>hamcrest-library</artifactId> <version>1.4-atlassian-1</version> </dependency>
-
Junit中的基本注解
Junit中集中基本注解,是必须掌握的- @BeforeClass ––表示在类中的任意public static void方法执行之前执行
- @AfterClass –– 表示在类中的任意public static void方法执行之后执行
- @Before –– 表示在任意使用@Test注解标注的public void方法执行之前执行
- @After –– 表示在任意使用@Test注解标注的public void方法执行之后执行
- @Test –– 使用该注解标注的public void方法会表示为一个测试方法
使用示例:
BasicAnnotationTest.java:
输出:package org.byron4j.spring_mvc_log4j; import org.junit.After; import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; public class BasicAnnotationTest { // 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