测试框架Junit-jupiter + Junit套件
框架依赖
junit-4.13.2.jar
junit-jupiter-5.9.2.jar
junit-jupiter-api-5.9.2.jar
junit-jupiter-params-5.9.2.jar
junit-platform-commons-1.9.2.jar
junit-platform-engine-1.9.2.jar
junit-platform-launcher-1.9.2.jar
junit-platform-runner-1.9.2.jar
hamcrest-core-1.3.jar
opentest4j-1.2.0.jar
套件
junit-platform-suite-api-1.9.2.jar
junit-platform-suite-commons-1.9.2.jar
maven依赖
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>5.9.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-runner</artifactId>
<version>1.9.2</version>
<scope>test</scope>
</dependency>
Junit5是什么
JUnit 是一个 Java 编程语言的单元测试框架。它是由 Kent Beck (极限编程)和 Erich Gamma(设计模式)建立,是 xUnit 家族中最成功的的一个。大部
分的 Java IDE 都集成了 JUnit 作为单元测试工具。
Junit5用法
规范
-
测试的类不能是抽象类,且必须只含有一个构造器。
-
测试方法不能是抽象方法,而且不能有返回值。
-
测试类和方法不是必须被public修饰,但不能被private修饰。建议测试类和方法省略public修饰符、一些特殊的要求除外。
标准的测试类如下:
public class StandardUnitTest {
常用注解
@Test
标记测试方法
public class StandardUnitTest {
@ParameterizedTest
标记该测试方法可进行参数化测试、通常与@ValueSource联合使用来指定参数的数据源
class ParametizedTest {
@RepeatedTest
重复执行该测试用例
class UserRepeatTest {
@DisplayName
声明测试类或测试方法的自定义显示名称
@BeforeEach
表示被注解的方法应在当前类的每个@Test,@RepeatedTest,@ParameterizedTest方法之前执行
@AfterEach
表示被注解的方法应在当前类的每个@Test,@RepeatedTest,@ParameterizedTest方法之后执行;
public class StandardUnitTest {
@BeforeAll
表示被注解的方法应该在当前类的所有@Test,@RepeatedTest,@ParameterizedTest, @BeforeEach方法之前执行
@AfterAll
表示被注解的方法应该在当前类的所有@Test,@RepeatedTest,@ParameterizedTest,@BeforeEach方法之后执行
public class StandardUnitTest {
@Disabled
用于禁用测试类或测试方法;
public class StandardUnitTest {
如果使用UI线程运行测试用例则加上下面的注解
使用断言
assertEquals
判断两个对象或者原始类型是否相等
assertNotEquals
判断两个对象或者原始类型是否不相等
assertSame
判断两个对象引用是否指向同一对象
assertNotSame
判断两个对象引用是否指向不同对象
assertNull
判断给定对象引用是否为null
assertNotNull
判断给定对象引用是否不为null
这里有一个问题,当我们在一个测试用例中加入多个断言时,如果其中一个发生了错误,后面的测试代码将不再执行
我们可以使用Assertions类中的assertAll方法 解决上述问题
假设
假设是 org.junit.jupiter.api.Assumptions 类中的静态方法。他们仅在满足指定条件时执行测试,否则测试将中止。当假设失败时,将抛出 org.opentest4j.TestAbortedException 并跳过测试。不会导致测试失败。
assumeTrue
验证给定的假设为true,若为falsee,将终止测试
assumeFalse
验证给定的假设为false,若为true,将终止测试
assumingThat
执行提供的可执行Executable
,但仅在提供的假设有效时执行。如果假设无效,Executable
将不执行
@Test
void regUser() {
Assumptions.assumeFalse(false);
}
@Test
void assumptThat() {
Assumptions.assumingThat(true, () -> {
System.out.println("pass");
});
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!