当前位置: 首页 > 知识库问答 >
问题:

为什么Surefire没有执行我的JUnit5测试?

於和志
2023-03-14

我正在尝试将一个梅文Spring靴(2.3.12)应用程序从JUnit4转换为JUnit5。我已经阅读了很多关于如何做到这一点的不同帖子。

我能够在Eclipse中执行我的JUnit5测试。

我的问题是我无法让Maven Surefire执行我的JUnit5测试。我尝试了各种配置变体。当它到达Surefire步骤时,它只执行我以前的JUnit4测试,并且简单地忽略任何JUnit5测试。我已经验证了,如果其中一个JUni4测试从此执行,并且我将该测试转换为JUnit5,它将忽略该测试。在这一点上,我只关注使用Mockito运行器的测试,因为它们比Spring运行器测试更容易转换(其中绝大多数可能可以更改为仅使用mockito运行器)。

这是我在surefire插件配置中的:

        <plugin>
            <artifactId>maven-surefire-plugin</artifactId>          
            <configuration>
                <!-- <groups>UnitTest</groups> -->
                <reuseForks>false</reuseForks>
                <redirectTestOutputToFile>true</redirectTestOutputToFile>
                <argLine>${surefireArgLine}</argLine>
                <skipTests>${skip.unit.tests}</skipTests>
                <excludes>
                    <exclude>**/component/*.java</exclude>
                    <exclude>**/contract/*.java</exclude>
                    <exclude>**/integration/*.java</exclude>
                </excludes>
                <dependencies>
                    <dependency>
                        <groupId>org.junit.jupiter</groupId>
                        <artifactId>junit-jupiter-engine</artifactId>
                        <version>5.8.2</version>
                    </dependency>
                </dependencies>
            </configuration>
        </plugin>

我现在已经把“组”注释掉了,直到我明白没有它是干什么的。

这是一个单元测试的摘录:

import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.InjectMocks;
import org.mockito.junit.jupiter.MockitoExtension;

@ExtendWith(MockitoExtension.class)
public class BDSHelperTest {

在我将其转换为使用JUnit5类之前,它会在我运行“mvn package”时执行。现在我已经转换了它,Surefire没有执行它。

这是我在万全之策开始时看到的:

[INFO] --- maven-surefire-plugin:3.0.0-M5:test (default-test) @ NotesMs ---
[INFO] 
[INFO] -------------------------------------------------------
[INFO]  T E S T S
[INFO] -------------------------------------------------------

此时,它显示了所有老JUnit4测试的测试运行,但没有运行任何JUnit5测试。

共有1个答案

章建木
2023-03-14

我是Surefire的Apache开发者。我已经创建了一个项目,证明它与Surefire 3.0.0-M5,JUnit木星5.8.2和Mockito扩展工程。请不要在这种情况下使用JUnit4和Vintage。没有必要在插件内部使用依赖关系。在项目POM中使用依赖项。在Github:https://github.com/Tibor17/junit5-mockito-examples上关注它

 类似资料:
  • 我使用surefire和failsafe分别执行单元测试和集成测试。所有测试都位于文件夹中。到目前为止,我有一个集成测试类,其测试方法(用@test注释)在所有单元测试运行时从不执行。这是我的pom的摘录。xml: 我使用maven目标来运行测试。

  • 这是我添加的公共类NewEmptyJUnitTest的代码{ 这是pom.xml文件 我一直收到这个错误:

  • 我有一个C++实验室,问题是:用户应该为X输入一个值(X是所持有的测试数)。如果x<15,程序不计算任何东西。如果X在16和30之间,程序应计算C=1.0/10.0*(24a);如果X>30,程序应计算C=0.15(24*a)。我的multiple if代码可以工作,但是当我输入X的值时,方程没有解出。有人知道吗??

  • 试着用TestNG运行我所有的cucumber测试。然而,我的套房没有找到。 当我将TestNG.xml文件作为TestNG运行时,未找到如下所示的测试

  • 我试图为我的类“Sinus”(用于计算浮点的Sinus)运行一个测试,但当我试图运行这个测试来生成我的Cobertura覆盖率报告时,它不起作用,我真的不知道为什么!你有什么建议或解释吗?(我使用cmd:mvn cobertura:cobertura) -这是我的测试: 结果是: 那有什么问题?有什么想法吗?这是我的pom。xml如下:

  • 问题内容: 我正在学习Go,并且想尝试goroutine和频道。 这是我的代码: 结果如下: 我不明白为什么我的goroutine永远不会执行。没有输入“进入goroutine”,并且没有任何错误消息。 问题答案: 事实是您的goroutine开始执行,但是在执行任何操作之前就结束了,因为您的程序在打印后立即停止:goroutine的执行与主程序无关,但是将在与程序相同的位置处停止。因此,基本上,