1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
public
class
CardServiceTest {
/**
* 最佳实践:
* 1. 测试方法上必须使用@Test进行修饰
* 2. 测试方法必须使用public void 进行修改,不能带任何的参数
* 3. 新建一个源代码目录存放我们的测试代码,测试类的包和被测试的一致
* 4. 测试单元中每个方法必须独立测试,不能有任何依赖
* 5. 测试类使用Test作为后缀,测试方法使用Test作为后缀(看个人喜好)
*/
@Test
public
void
addTest(){
// 使用断言
assertEquals(
6
,
new
CardService().add(
3
,
3
));
}
}
|
如下目录结构
1. Failure 一般由于单元测试使用的断言方法判断失败所引起的,就是说程序输出的结果和我们预期的不一样。
2. Errors 是由代码异常引起的,可能是测试代码本身错误或是被测试代码中的bug。
3. 一切都成功进度条显示绿色
JUnit常用注解说明
1.
@BeforeClass修饰的方法会在所有方法被调用前执行,该方法是静态的,测试类被加载就会运行它,而且内存中只有一个实例存在,它比较适合加载配置文件等。
2.
@AfterClass所修饰的方法通常用来对资源的清理,如管理数据库的连接等
3.
@Before和
@After会在每个测试方法的前后各执行一次。
4.
@Test 将一个普通的方法修饰成一个测试方法
@Test(expected=XX.class) -预测的异常
@Test(timeout=2000) - 超时,单位毫秒
5.
@Ignore 会被测试运行器忽略
6.
@RunWith 可以更改测试运行器 org.junit.runner.Runner
7.
@FixMethodOrder(MethodSorters.NAME_ASCENDING) // 类注解,设置运行类时方法的执行顺序规则,具体参数说明查看MethodSorters源码
1
2
3
4
5
6
7
8
9
10
|
@RunWith
(Suite.
class
)
@Suite
.SuiteClasses({ EquipmentServiceTest.
class
, UserServiceTest.
class
})
public
class
CardServiceTest {
/**
* 测试套件就是组织测试类一起运行
* 1. 写一个作为测试套件的入口类,这个类里不包含其他方法
* 2. 更改测试类的运行器Suite.class
* 3. 将要测试的类作为数组传入到Suite.SuiteClass({})
*/
}
|
Junit 4 引入了一个新的功能参数化测试。参数化测试允许开发人员使用不同的值反复运行同一个测试。
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
|
@RunWith
(Parameterized.
class
)
public
class
CardServiceTest {
/**
* 1. 更改默认的测试运行器为@RunWith(Parameterized.class)
* 2. 为每一列测试数据创建一个实例变量。
* 3. 声明一个返回值为Collection的公共静态方法,并使用@Parameters进行修饰,它返回一个对象的集合(数组)来作为测试数据集合。
* 4. 为测试类声明一个带有参数的公共构造函数,并在其中为之声明变量赋值
*/
int
expected =
0
;
int
input1 =
0
;
int
input2 =
0
;
@Parameters
public
static
Collection<Object[]> t() {
return
Arrays.asList(
new
Object[][] { {
3
,
1
,
2
}, {
4
,
2
,
2
} });
}
public
CardServiceTest(
int
expected,
int
input1,
int
input2) {
this
.expected = expected;
this
.input1 = input1;
this
.input2 = input2;
}
@Test
public
void
addTest() {
// 会运行两次,以下的变量分别对应的是上面@Parameters声明的数值{ 3, 1, 2 }和 { 4, 2, 2 },
assertEquals(expected,
new
CardService().add(input1, input2));
}
}
|
参考:慕课网