我目前正在升级一个项目以使用 JUnit5。
我设法从 jupiter 和 mockito 扩展导入了必要的依赖项,以使所有带有模拟的单元测试(Junit 4 和 5)在 IntelliJ 中运行良好。
目前我的工作解决方案有:
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>${mockito-core.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-junit-jupiter</artifactId>
<version>${mockito-core.version}</version>
<exclusions>
<exclusion>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
</exclusion>
<exclusion>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
</exclusion>
</exclusions>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
mockito-core.version
= 3.0.0junit.version
= 5.2.0然而当我通过 Maven 运行测试时,JUnit5 测试被忽略。
我在这个博客上看到:https://dev.to/martinbelev/how-to-enable-junit-5-in-new-spring-boot-project-29a8那个
spring-boot-starter-test
导入 JUnit4,因此我必须排除 junit
从这个依赖。然而spring-boot-starter-test
依赖项是从父 pom 导入的,因此添加此排除项: <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<version>2.0.9.RELEASE</version>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</exclusion>
</exclusions>
</dependency>
没有效果,有效依赖
org.springframework.boot
是在旧版本的父 pom 上定义的那个。有谁知道我该如何解决这个问题?先感谢您!
编辑:
测试类是:
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
@ExtendWith(MockitoExtension.class)
public class SomeTest {
private static final String TEST = "test";
@Mock
RetailerService retailerService;
private Delivery delivery;
@BeforeEach
public void setUp() {
when(retailerService.getMessage(any(String.class))).thenReturn(TEST);
delivery = new Delivery(retailerService);
}
@Test
public void should_have_delivery() {
assertEquals(getExpectedDeliveriesDTOs(), delivery.toDtos());
}
}
最佳答案
首先 - 请验证您的测试类名称是否:
如果是,则尝试添加
junit-platform-surefire-provider
和 junit-jupiter-engine
对 maven-surefire-plugin
的依赖:<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.2</version>
<dependencies>
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-surefire-provider</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>${junit.version}</version>
</dependency>
</dependencies>
</plugin>
关于maven - 使用 Maven 和 Spring Boot 忽略 JUnit5 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58303511/