使用maven包装类型运行测试;pom“;

使用maven包装类型运行测试;pom“;,maven,junit,pom.xml,maven-surefire-plugin,Maven,Junit,Pom.xml,Maven Surefire Plugin,当我的pom设置为打包类型“pom”时,我在运行单元测试时遇到了一些问题。起初,它说这个项目不需要目标,所以我将maven surefire插件添加到pom.xml中,以将测试阶段绑定到maven surefire插件测试目标 <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-

当我的pom设置为打包类型“pom”时,我在运行单元测试时遇到了一些问题。起初,它说这个项目不需要目标,所以我将maven surefire插件添加到pom.xml中,以将测试阶段绑定到maven surefire插件测试目标

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.9</version>
            <executions>
                <execution>
                    <phase>test</phase>
                    <goals>
                        <goal>test</goal>
                    </goals>
                </execution>
            </executions>
        </plugin> 

org.apache.maven.plugins
maven surefire插件
2.9
测试
测试
现在surefire插件正在运行,但是它说没有测试要运行。如果我将打包类型更改为jar并运行mvn测试,那么它将获取我的测试文件

当我运行MVNTest-X时,它会显示“testSourceDirectory=C:\dev\dsl\src\test\java”,这是正确的位置。包装类型“pom”和“jar”的测试位置是否不同?我试着加上

            <configuration>
                <testSourceDirectory>src/test/java</testSourceDirectory>
            </configuration>

src/test/java

对于surefire插件,它没有任何帮助。

正如Dave评论的那样,如果您使用的是
pom
打包,它只执行以下生命周期目标。请参阅相关的maven文档

  • 包装
  • 安装
  • 部署
如果需要它来运行任何其他目标,则需要显式指定它。比如说,

mvn clean compiler:testCompile surefire:test

Pom打包只用于元数据项目,不是吗?你想做什么?我实际上处于同一个场景中-我有一个系统测试模块,我只想运行,但不想用它们生成一个jar。但是,如果不指定pom之外的打包类型,我就无法运行测试。我该怎么做(这可能值得一个单独的问题)。@DaveNewton我之所以想这样做,是因为它不是java应用程序,我想生成一个zip文件,其中包含数据库脚本作为工件。@whaley如下所示,您需要将编译器:testCompile目标绑定到测试编译阶段,还有surefire:测试到测试阶段。哦,谢谢!我知道这与测试阶段无关,但我并没有想到我还需要运行编译器:testCompile。还有一个问题。我想我可以将编译器:testCompile绑定到测试阶段,但它似乎不起作用。有什么建议吗?插件maven编译器插件2.3.2测试编译testCompile不要紧,我有两个maven编译器插件部分,所以它被覆盖了。我使用它作为mvn干净包编译器:testCompile surefire:test,因为我在没有包的情况下出错