0%

Java之Junit应用

写在前面

Junit5已经出来,但因为习惯问题此处还是主要语句Junit4的主要用法。

Junit应用

Junit 断言

JUnit的编写,此处就不再举例说明了,如果不太清楚可以随便查一下。我们从断言开始入手。
所有的断言都包含在 Assert 类中。
public class Assert extends java.lang.Object
这个类提供了很多有用的断言方法来编写测试用例。只有失败的断言才会被记录。Assert 类中的一些有用的方法列式如下:

方法 描述
void assertEquals(boolean expected, boolean actual) 检查两个变量或者等式是否平衡
void assertTrue(boolean expected, boolean actual) 检查条件为真
void assertFalse(boolean expected) 检查条件为假
void assertNotNull(Object object) 检查对象不为空
void assertNull(Object object) 检查对象为空
void assertSame(boolean condition) 检查两个相关对象是否指向同一个对象
void assertNotSame(boolean condition) 检查两个相关对象是否指向不同对象
void assertArrayEquals(expectedArray, resultArray) 检查两个数组是否相等

Junit 执行过程

让我们通过一个例子来更好的理解Junit中的的方法的执行过程。首先创建一个java文件,命名为LearnJunit.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Ignore;
import org.junit.Test;

public class LearnJunit {

//execute only once, in the starting
@BeforeClass
public static void beforeClass() {
System.out.println("this is before class method");
}

//execute only once, in the end
@AfterClass
public static void afterClass() {
System.out.println("this is after class method");
}

//execute for each test, before executing test
@Before
public void before() {
System.out.println("this is before");
}

//execute for each test, after executing test
@After
public void after() {
System.out.println("this is after");
}

//test case 1
@Test
public void testCase1() {
System.out.println("this is the test case 1");
}

//test case 2
@Test
public void testCase2() {
System.out.println("this is the test case 2");
}
}

之后在同一文件目录下创建一个java文件用来运行测试文件,命名为TestRunner.java。

1
2
3
4
5
6
7
8
9
10
11
12
13
import org.junit.runner.JUnitCore;
import org.junit.runner.Result;
import org.junit.runner.notification.Failure;

public class TestRunner {
public static void main(String[] args) {
Result result = JUnitCore.runClasses(LearnJunit.class);
for (Failure failure : result.getFailures()) {
System.out.println(failure.toString());
}
System.out.println(result.wasSuccessful());
}
}

编译运行的结果是:

1
2
3
4
5
6
7
8
9
this is before class method
this is before
this is the test case 1
this is after
this is before
this is the test case 2
this is after
this is after class method
true

最后的trueresult.wasSuccessful()的结果,Result result = JUnitCore.runClasses(LearnJunit.class);是执行命令。