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
2 junit
3 junit
4 4.12
5
2、新建一个测试类JunitTest.java,并且写一个无入参,无返回值的普通方法,在方法上加上注解@Test,如下
1 packagecom.test.junite;2
3 importorg.junit.Test;4
5 public classJunitTest {6
7 @Test8 public voidtestJunit(){9 System.out.println("测试Junit,简单使用...");10 }11 }
3、测试结果
Junit常用注解
1、与测试流程相关的4个注解
1 packagecom.test.junite;2
3 importorg.junit.After;4 importorg.junit.AfterClass;5 importorg.junit.Before;6 importorg.junit.BeforeClass;7 importorg.junit.Test;8
9 public classJunitFlowTest {10
11 /**
12 * 1、@BeforeClass修饰的方法会在所有方法被调用前被执行13 * 而且该方法是静态的,所有当测试类被加载后接着就会运行它14 * 而且在内存中它只会存在一份实例,它比较适合加载配置文件15 * 2、@AfterClass所修饰的方法通常用来对资源的清理,如关闭数据库的连接16 * 3、@Before和@After会在每个测试方法的前后各执行一次17 *18 */
19
20 @BeforeClass21 public static void setUpBeforeClass() throwsException {22 System.out.println("this is @BeforeClass ...");23 }24
25 @AfterClass26 public static void tearDownAfterClass() throwsException {27 System.out.println("this is @AfterClass ...");28 }29
30 @Before31 public void setUp() throwsException {32 System.out.println("this is @Before ...");33 }34
35 @After36 public void tearDown() throwsException {37 System.out.println("this is @After ...");38 }39
40 @Test41 public voidtest1() {42 System.out.println("this is test1 ...");43 }44
45 @Test46 public voidtest2() {47 System.out.println("this is test2 ...");48 }49
50 }
运行结果如下:
2、与@Test相关的
1 packagecom.test.junite;2
3 import staticorg.junit.Assert.assertEquals;4
5 importorg.junit.Ignore;6 importorg.junit.Test;7
8 public classAnnotationTest {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.Runner20 */
21 @Test(expected=ArithmeticException.class)22 public voidtestDivide() {23 assertEquals(3, 3 / 0);24 }25
26 @Test(timeout=2000)27 public voidtestTimeout() {28 while (true) {29 System.out.println("run forever ...");30 }31 }32
33 @Ignore34 @Test35 public voidtestIgnore() {36 System.out.println("this is testIgnore ...");37 }38 }
Junit测试类编写原则
1、测试方法必须使用@Test进行修饰
2、测试方法必须使用public void 进行修饰,不能带任何参数
3、新建一个源码目录来存放我们的测试代码
4、测试类的包应该和被测试类保持一致
5、测试单元中的每个方法必须可以独立测试,测试方法间不能有任何依赖
6、测试类使用Test作为类名后缀(非必须)
7、测试方法使用test作为方法前缀(非必须)