ID 为“junit-vintage”的 TestEngine 未能发现测试 - JUnitException:无法解析 junit 的版本:junit:4.1

spring

1个回答

写回答

tata1028

2025-07-05 06:16

+ 关注

Java
Java

JUnit 4 和 JUnit 5:测试引擎的选择

在软件开发中,测试是非常重要的一环。通过测试,我们可以验证代码的正确性和稳定性,确保软件的质量。JUnit 是一个广泛使用的 Java 单元测试框架,它提供了丰富的断言和测试运行的功能。而在使用 JUnit 进行测试时,我们需要选择适合的测试引擎。本文将介绍 JUnit 4 和 JUnit 5 两个版本的测试引擎,并探讨如何解决在使用 JUnit 5 时可能遇到的问题。

JUnit 4:经典的测试引擎

JUnit 4 是早期版本的 JUnit 测试框架,它使用的是经典的测试引擎。在使用 JUnit 4 进行测试时,我们需要在项目的依赖中添加 junit 版本为 4.x.x 的库。然后,我们可以编写测试代码,并使用 @Test 注解标记测试方法。通过运行测试类,JUnit 4 引擎会自动识别并执行所有被 @Test 注解标记的方法。

下面是一个使用 JUnit 4 进行测试的简单示例:

Java

import org.junit.Test;

import static org.junit.Assert.*;

public class CalculatorTest {

@Test

public void testAdd() {

Calculator calculator = new Calculator();

int result = calculator.add(2, 3);

assertEquals(5, result);

}

@Test

public void testSubtract() {

Calculator calculator = new Calculator();

int result = calculator.subtract(5, 3);

assertEquals(2, result);

}

}

在上面的示例中,我们创建了一个名为 Calculator 的类,并编写了两个测试方法 testAdd 和 testSubtract。这些方法被 @Test 注解标记,表示它们是测试方法。在每个测试方法中,我们创建了一个 Calculator 对象,并调用其相应的方法进行测试。使用断言方法 assertEquals 来验证计算结果是否符合预期。

JUnit 5:全新的测试引擎

JUnit 5 是对 JUnit 4 的重大更新,它引入了全新的测试引擎,被称为 JUnit Platform。JUnit 5 的设计目标是提供更加灵活、可扩展和可定制的测试框架。与 JUnit 4 不同,JUnit 5 的测试引擎并不直接依赖于 junit 版本为 4.x.x 的库,而是需要添加 junit-platform-engine 和 junit-jupiter-engine 这两个库作为依赖。

下面是一个使用 JUnit 5 进行测试的简单示例:

Java

import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.*;

public class CalculatorTest {

@Test

public void testAdd() {

Calculator calculator = new Calculator();

int result = calculator.add(2, 3);

assertEquals(5, result);

}

@Test

public void testSubtract() {

Calculator calculator = new Calculator();

int result = calculator.subtract(5, 3);

assertEquals(2, result);

}

}

在上面的示例中,我们使用了 JUnit 5 的注解 @Test 和断言方法 assertEquals,与 JUnit 4 的使用方式非常相似。但需要注意的是,我们需要使用 import org.junit.jupiter.api.Test 和 import static org.junit.jupiter.api.Assertions.* 来导入 JUnit 5 的相关类和方法。

解决问题:无法解析 junit 的版本

在使用 JUnit 5 时,有时可能会遇到以下错误信息:“TestEngine with ID 'junit-vintage' fAIled to discover tests - JUnitException: Could not resolve junit:junit:4.13.2”。这是因为在项目的依赖中同时引入了 JUnit 4 和 JUnit 5 的库,而两个版本的测试引擎发生了冲突。

要解决这个问题,我们需要排除掉 junit 版本为 4.x.x 的库。具体做法是,在项目的依赖中添加如下配置:

XML

<dependency>

<groupId>org.junit.jupiter</groupId>

<artifactId>junit-jupiter-engine</artifactId>

<version>5.x.x</version>

<scope>test</scope>

<exclusions>

<exclusion>

<groupId>junit</groupId>

<artifactId>junit</artifactId>

</exclusion>

</exclusions>

</dependency>

在上面的配置中,我们排除了 junit:junit 这个库的引入,从而解决了测试引擎冲突的问题。这样,我们就可以正常使用 JUnit 5 进行测试了。

在软件开发中,选择适合的测试引擎是非常重要的。JUnit 4 是经典的测试引擎,使用简单,但功能相对较为有限。而 JUnit 5 是全新的测试引擎,提供了更加灵活和强大的功能。在使用 JUnit 5 进行测试时,我们需要注意解决可能出现的测试引擎冲突问题,确保测试的顺利进行。通过合理选择和使用测试引擎,我们可以更加高效地进行软件开发,并提高代码的质量和稳定性。

举报有用(4)分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号