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工程,引入依赖
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
2、新建一个测试类JunitTest.java,并且写一个无入参,无返回值的普通方法,在方法上加上注解@Test,如下
package com.test.junite; import org.junit.Test; public class JunitTest { @Test
public void testJunit(){
System.out.println("测试Junit,简单使用...");
}
}
3、测试结果
Junit常用注解
1、与测试流程相关的4个注解
package com.test.junite; import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test; public class JunitFlowTest { /**
* 1、@BeforeClass修饰的方法会在所有方法被调用前被执行
* 而且该方法是静态的,所有当测试类被加载后接着就会运行它
* 而且在内存中它只会存在一份实例,它比较适合加载配置文件
* 2、@AfterClass所修饰的方法通常用来对资源的清理,如关闭数据库的连接
* 3、@Before和@After会在每个测试方法的前后各执行一次
*
*/ @BeforeClass
public static void setUpBeforeClass() throws Exception {
System.out.println("this is @BeforeClass ...");
} @AfterClass
public static void tearDownAfterClass() throws Exception {
System.out.println("this is @AfterClass ...");
} @Before
public void setUp() throws Exception {
System.out.println("this is @Before ...");
} @After
public void tearDown() throws Exception {
System.out.println("this is @After ...");
} @Test
public void test1() {
System.out.println("this is test1 ...");
} @Test
public void test2() {
System.out.println("this is test2 ...");
} }
运行结果如下:
2、与@Test相关的
package com.test.junite; import static org.junit.Assert.assertEquals; import org.junit.Ignore;
import org.junit.Test; public class AnnotationTest { /**
* @Test:将一个普通的方法修饰成为一个测试方法
* @Test(expected=XX.class)
* @Test(timeout=毫秒)
* @BeforeClass:它会在所有方法运行前被执行,static修饰
* @AfterClass:它会在所有方法运行后被执行,static修饰
* @Before:会在每一个测试方法运行前被执行一次
* @After:会在每一个测试方法运行后被执行一次
* @Ignore:所修饰的测试方法会测试运行器被忽略
* @RunWiht:可以更改测试运行器 org.junit.runner.Runner
*/
@Test(expected=ArithmeticException.class)
public void testDivide() {
assertEquals(3, 3 / 0);
} @Test(timeout=2000)
public void testTimeout() {
while (true) {
System.out.println("run forever ...");
}
} @Ignore
@Test
public void testIgnore() {
System.out.println("this is testIgnore ...");
}
}
Junit测试类编写原则
1、测试方法必须使用@Test进行修饰
2、测试方法必须使用public void 进行修饰,不能带任何参数
3、新建一个源码目录来存放我们的测试代码
4、测试类的包应该和被测试类保持一致
5、测试单元中的每个方法必须可以独立测试,测试方法间不能有任何依赖
6、测试类使用Test作为类名后缀(非必须)
7、测试方法使用test作为方法前缀(非必须)