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

Maven Surefire不执行测试阶段

林意蕴
2023-03-14

运行mvn测试时似乎surefire没有执行其测试目标(或者至少没有选择我在配置中包含的测试)。

这是一个多模块maven项目,目前全部在groovy中,其结构类似于以下内容:

root
-commons
-framework
-generatedsources1
-generatedsources2
-test-groups
--test-group1
---src/test/java/path.to.TestClass.groovy
--test-group2

我在测试组pom中有以下surefire配置。xml:

<build>
    <plugins>
        <plugin>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.18.1</version>
            <configuration>
                <useFile>false</useFile>
                <includes>
                    <include>**/*Spec.groovy</include>
                    <include>**/*Test.groovy</include>
                </includes>
            </configuration>
        </plugin>
    </plugins>
</build>

但是,当我针对这个pom执行mvn测试时。xml或任何一个子POM,测试阶段都不会执行。

这是maven的输出:

[INFO] Scanning for projects...
[INFO] 
[INFO] ------------------------------------------------------------------------
[INFO] Building system-test-category-man 1.0.0
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- gmavenplus-plugin:1.6:compile (default) @ system-test-category-man ---
[INFO] Using Groovy 2.4.9 to perform compile.
[INFO] Compiled 2 files.
[INFO] 
[INFO] --- gmavenplus-plugin:1.6:compileTests (default) @ system-test-category-man ---
[INFO] Using Groovy 2.4.9 to perform compileTests.
[INFO] Compiled 3 files.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3.809 s
[INFO] Finished at: 2018-01-08T10:53:29Z
[INFO] Final Memory: 20M/175M
[INFO] ------------------------------------------------------------------------

当我直接调用插件时:

[INFO] Scanning for projects...
[INFO] 
[INFO] ------------------------------------------------------------------------
[INFO] Building system-test-category-man 1.0.0
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-surefire-plugin:2.18.1:test (default-cli) @ system-test-category-man ---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.315 s
[INFO] Finished at: 2018-01-08T10:58:18Z
[INFO] Final Memory: 9M/155M
[INFO] ------------------------------------------------------------------------

我有什么误解吗?


共有2个答案

丁文轩
2023-03-14

您是否尝试更改工作目录:

<build>
    <plugins>
        <plugin>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.18.1</version>
            <configuration>
                <workingDirectory>wherever you have your tests</workingDirectory>
                <useFile>false</useFile>
                <includes>
                    <include>**/*Spec.groovy</include>
                    <include>**/*Test.groovy</include>
                </includes>
            </configuration>
        </plugin>
    </plugins>
</build>

更新于2018年11月1日:不确定这是否能解决问题,但您能否尝试将这些依赖项添加为报告依赖项(构建依赖项之外):

<reporting>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-report-plugin</artifactId>
            <version>2.18.1</version>
            <configuration>
                <showSuccess>true</showSuccess>
                <linkXRef>false</linkXRef>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.18.1</version>
        </plugin>
    </plugins>
</reporting>
华宣
2023-03-14

这个问题也让我困惑,但我想我发现了问题所在。

maven-surefire插件的角度来看Groovy类只不过是无意义的文本文件,它无法扫描它以寻找注释。但是我可以成功地指定

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.12.4</version>
                <configuration>
                    <includes>
                        <include>**/*.class</include>
                    </includes>
                </configuration>
            </plugin>

否则,您必须根据这里记录的默认命名约定来命名您的测试(Groovy测试类):http://maven.apache.org/surefire/maven-surefire-plugin/test-mojo.html#includes,如下所示:

<includes>
    <include>**/Test*.java</include>
    <include>**/*Test.java</include>
    <include>**/*Tests.java</include>
    <include>**/*TestCase.java</include>
</includes>

(此处将.java替换为.groovy)

 类似资料:
  • 我正在Jenkins Box上运行用Maven构建的jUnit4测试。我的目标是在执行测试之前恢复测试数据库。 看起来exec-maven-plugin是可行的,但我不能让它运行。有什么指示吗?虽然有很多例子,但是mojo站点上的doc非常薄。 我需要运行的类当前位于: myproject.src.test.java._tools.buildTestEnvironment.java 我的pom.x

  • 22.13.1.执行测试 测试从main构建过程中分离出来的,运行在一个单独的JVM中执行.Test任务允许控制这些如何发生. 有许多属性用于控制测试过程如何启动.这包括使用诸如系统属性,JVM参数和Java可执行文件。 可以指定是否要并行执行测试.Gradle通过同时运行多个测试进程提供并行执行测试.每个测试进程在同一时间只能执行一个测试,为了充分利用这一特性,一般不需要为tests任务做什么特

  • 问题内容: 我正在Jenkins盒子上运行用Maven构建的jUnit4测试。我的目标是在执行测试之前还原测试数据库。 看起来exec-maven-plugin是可行的方法,但我无法使其运行。有指针吗?尽管有很多示例,但mojo网站上的文档非常薄。 我目前需要参加的课程位于: MyProject.src.test.java._tools.BuildTestEnvironment.java 我的po

  • 因此,这是我第一次使用JBehave,我试图在项目中创建第一个JBehave,但目前似乎测试没有执行这些步骤。最后,测试表明所有测试用例都通过了,没有任何问题,但实际上它们根本没有被执行。我在每个步骤方法中都设置了断点,而且我的调试器根本不会阻止我,更不用说这些步骤当前抛出的异常了。 和测试执行器: 你知道有什么问题吗?

  • 我有一个Gradle任务,简单地将文件从一个文件夹复制到另一个文件夹。 当在配置阶段调用copy'from''into'方法时,它可以工作,但当在执行阶段调用它们时,它就不工作了。 这样做是有效的 gradle copyServerConfig 如果我把它放在doFirst{}块中,也会发生同样的事情。 我不明白的另一件事是: gradle task1 但如果我改成这样: gradle task1

  • 我有一个用selenium进行单元测试和集成测试的项目。 当我用IntelliJ执行cucumber集成测试时,它工作得很好,您可以看到: 用Intellij执行cucumber集成测试 但是,当我执行mvn集成测试时,似乎没有发现任何联调: 故障保护输出 我定义了以下POM: > 文件夹结构是文件夹结构 mvn集成-测试输出https://drive . Google . com/file/d/