Junit介绍
JUnit是一个Java语言的单元测试框架。它由Kent Beck和Erich Gamma建立,逐渐成为源于Kent Beck的sUnit的xUnit家族中最为成功的一个。 JUnit有它自己的JUnit扩展生态圈。多数Java的开发环境都已经集成了JUnit作为单元测试的工具。
JUnit是由 Erich Gamma 和 Kent Beck 编写的一个回归测试框架(regression testing framework)。Junit测试是程序员测试,即所谓白盒测试,因为程序员知道被测试的软件如何(How)完成功能和完成什么样(What)的功能。Junit是一套框架,继承TestCase类,就可以用Junit进行自动测试了。
Junit简单使用
1、新建一个普通的maven工程,引入依赖
1 <dependency> 2 <groupId>junit</groupId> 3 <artifactId>junit</artifactId> 4 <version>4.12</version> 5 </dependency>
2、新建一个测试类JunitTest.java,并且写一个无入参,无返回值的普通方法,在方法上加上注解@Test,如下
1 package com.test.junite; 2 3 import org.junit.Test; 4 5 public class JunitTest { 6 7 @Test 8 public void testJunit(){ 9 System.out.println("测试Junit,简单使用..."); 10 } 11 }
3、测试结果
Junit常用注解
1、与测试流程相关的4个注解
1 package com.test.junite; 2 3 import org.junit.After; 4 import org.junit.AfterClass; 5 import org.junit.Before; 6 import org.junit.BeforeClass; 7 import org.junit.Test; 8 9 public class JunitFlowTest { 10 11 /** 12 * 1、@BeforeClass修饰的方法会在所有方法被调用前被执行 13 * 而且该方法是静态的,所有当测试类被加载后接着就会运行它 14 * 而且在内存中它只会存在一份实例,它比较适合加载配置文件 15 * 2、@AfterClass所修饰的方法通常用来对资源的清理,如关闭数据库的连接 16 * 3、@Before和@After会在每个测试方法的前后各执行一次 17 * 18 */ 19 20 @BeforeClass 21 public static void setUpBeforeClass() throws Exception { 22 System.out.println("this is @BeforeClass ..."); 23 } 24 25 @AfterClass 26 public static void tearDownAfterClass() throws Exception { 27 System.out.println("this is @AfterClass ..."); 28 } 29 30 @Before 31 public void setUp() throws Exception { 32 System.out.println("this is @Before ..."); 33 } 34 35 @After 36 public void tearDown() throws Exception { 37 System.out.println("this is @After ..."); 38 } 39 40 @Test 41 public void test1() { 42 System.out.println("this is test1 ..."); 43 } 44 45 @Test 46 public void test2() { 47 System.out.println("this is test2 ..."); 48 } 49 50 }
运行结果如下:
2、与@Test相关的
1 package com.test.junite; 2 3 import static org.junit.Assert.assertEquals; 4 5 import org.junit.Ignore; 6 import org.junit.Test; 7 8 public class AnnotationTest { 9 10 /** 11 * @Test:将一个普通的方法修饰成为一个测试方法 12 * @Test(expected=XX.class) 13 * @Test(timeout=毫秒) 14 * @BeforeClass:它会在所有方法运行前被执行,static修饰 15 * @AfterClass:它会在所有方法运行后被执行,static修饰 16 * @Before:会在每一个测试方法运行前被执行一次 17 * @After:会在每一个测试方法运行后被执行一次 18 * @Ignore:所修饰的测试方法会测试运行器被忽略 19 * @RunWiht:可以更改测试运行器 org.junit.runner.Runner 20 */ 21 @Test(expected=ArithmeticException.class) 22 public void testDivide() { 23 assertEquals(3, 3 / 0); 24 } 25 26 @Test(timeout=2000) 27 public void testTimeout() { 28 while (true) { 29 System.out.println("run forever ..."); 30 } 31 } 32 33 @Ignore 34 @Test 35 public void testIgnore() { 36 System.out.println("this is testIgnore ..."); 37 } 38 }
Junit测试类编写原则
1、测试方法必须使用@Test进行修饰
2、测试方法必须使用public void 进行修饰,不能带任何参数
3、新建一个源码目录来存放我们的测试代码
4、测试类的包应该和被测试类保持一致
5、测试单元中的每个方法必须可以独立测试,测试方法间不能有任何依赖
6、测试类使用Test作为类名后缀(非必须)
7、测试方法使用test作为方法前缀(非必须)