gpt4 book ai didi

java - 添加到 dependencyManagement 时,SpringBoot 不运行单元测试

转载 作者:行者123 更新时间:2023-12-02 00:05:57 24 4
gpt4 key购买 nike

我的项目应该从自定义父项继承,同时使用 Spring Boot .标准解决方案是使用 <dependencyManagement>部分描述here .

问题是当 Spring Boot依赖项被添加到该部分,maven 没有看到任何单元测试(测试运行 = 0)。我用 Artifact 复制了它 spring-boot-dependenciesspring-boot-starter .

重现步骤:

  1. 用一个单元测试创​​建一个maven项目SampleTest和以下 pom。
  2. 运行mvn test .
  3. 看到 SampleTest已运行但失败
  4. 取消注释 <dependencyManagement> 中的 block 进口Spring Boot
  5. 运行mvn test
  6. 看到没有运行任何测试并且构建成功。

我在旧版本的 surefire 上遇到了类似的问题, 找不到 JUnit5以类似的方式进行测试。但是有效的 pom 显示在这种情况下插件的版本被正确设置为 3.0.0-M4并且不会被 SpringBoot 覆盖。

您能帮我解决运行测试的问题并正确应用 Spring Boot吗?在这种情况下?


src/test/java/org/example/SampleTest.java

package org.example;

import org.junit.jupiter.api.*;

class SampleTest{
@Test
void test(){
Assertions.assertEquals(0, 1);
}
}

pom.xml

The following sample does not have a parent: I've just copied plugins and dependencies from that to keep it concise.

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>org.example</groupId>
<artifactId>spring-boot-import</artifactId>
<version>1.0</version>

<dependencyManagement>
<!-- when this block is uncommented no unit tests are found in the project-->

<!--
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.2.5.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
-->
</dependencyManagement>

<properties>
<version.java>11</version.java>
<version.junit.jupiter>5.6.0</version.junit.jupiter>
</properties>

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<compilerVersion>${version.java}</compilerVersion>
<release>${version.java}</release>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M4</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>3.0.0-M4</version>
</plugin>
</plugins>
</build>

<dependencies>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>${version.junit.jupiter}</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>

最佳答案

如果您使用的是 Spring Boot 2.x 那么默认情况下它支持 JUnit 5 并且所有用 JUnit 4 编写的测试用例都将在构建项目或执行 mvn 测试时不会被读取。要修复它,请在 pom.xml 中使用以下代码段:

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.8</version>
<dependencies>
<dependency>
<groupId>org.apache.maven.surefire</groupId>
<!-- Use the older JUnit 4 provider -->
<artifactId>surefire-junit4</artifactId>
<version>2.8</version>
</dependency>
</dependencies>
</plugin>

注意:使用上面的方法将跳过您的 JUnit 5 测试用例。

关于java - 添加到 dependencyManagement 时,SpringBoot 不运行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60650845/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com