【单元测试】【Android】JUnit 4 和 JUnit 5 的差异记录

背景

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命名有关?

相关推荐
paid槮1 天前
MySql基础:数据类型
android·mysql·adb
用户2018792831671 天前
AMS和app通信的小秘密
android
用户2018792831671 天前
ThreadPoolExecutor之市场雇工的故事
android
诺诺Okami1 天前
Android Framework-Launcher-InvariantDeviceProfile
android
Antonio9151 天前
【音视频】Android NDK 与.so库适配
android·音视频
sun0077001 天前
android ndk编译valgrind
android
AI视觉网奇1 天前
android studio 断点无效
android·ide·android studio
jiaxi的天空1 天前
android studio gradle 访问不了
android·ide·android studio
No Silver Bullet1 天前
android组包时会把从maven私服获取的包下载到本地吗
android
catchadmin1 天前
PHP serialize 序列化完全指南
android·开发语言·php