背景
Jetbrain IDE 支持生成 Test 类,其中选择JUnit5 和 JUnit,但是感觉这不是标准的单元测试,因为接口命名吧。
差异对比
两者生成的单测API名称同原API,没加test前缀的。使用差异主要表现在:
- setUp & tearDown 的注解
- 引用的junit包
| | JUnit 4 | JUnit 5 |
| setUp 注解 | Before | BeforeEach |
| tearDown 的注解 | After | AfterEach |
| 引用的junit包 | org.junit.Test | org.junit.jupiter.api.Test |
| 类名修饰符 | 有修饰符 public class UtilTest | 无修饰符, 默认 class UtilTest |
方法修饰符 | 有修饰符 @Before public void setUp() throws Exception { } | 无修饰符, 默认@BeforeEach void setUp() { } |
---|---|---|
[JUnit 版本差异项] |
代码template
JUnit 5
java
import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
class UtilTest {
@BeforeEach
void setUp() {
}
@AfterEach
void tearDown() {
}
@Test
void customTypeSummary() {
}
JUnit 4
要求类是公开public的,否则代码报错:
Test class 'UtilTest' is not constructable because it is not 'public'
java
import static org.junit.Assert.*;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
public class UtilTest {
@Before
public void setUp() throws Exception {
}
@After
public void tearDown() throws Exception {
}
@Test
public void customTypeSummary() {
}
另外有个疑问,怎么才能让main java 类文件能检测到对应的单元测试Coverage?是否跟类生成的方式或者Test类/API命名有关?