Dis*_*sha 4 java testing junit maven maven-surefire-plugin
我有一个定制的 eclipse studio 项目。对于单元测试,我们正在 - 下创建一个测试文件
TestJavaSrc/demoTest.java
Run Code Online (Sandbox Code Playgroud)
现在,这个 TestJavaSrc 文件夹与 POM.xml 位于同一级别,这是 POM.xml -
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.demo.test</groupId>
<artifactId>demo</artifactId>
<version>1.0.0</version>
<packaging>jar</packaging>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
</plugin>
</plugins>
</build>
</project>
Run Code Online (Sandbox Code Playgroud)
现在,当我以 mvn test 运行该项目时,它无法找到任何测试文件。而且,当我在命令行上运行以下命令时 -
mvn "-Dtest=TestJavaSrc/DemoTest.java" test
Run Code Online (Sandbox Code Playgroud)
它给了我错误-
Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.19.1:test
(default-test) on project demo: No tests were executed!
(Set -DfailIfNoTests=false to ignore this error.) -> [Help 1]
Run Code Online (Sandbox Code Playgroud)
另外,我的类路径中有 JUnit4
我有什么遗漏的吗?
在 Maven标准目录布局中,用 Java 编写的单元测试应位于src/test/java:
该
src目录包含构建项目的所有源材料、其站点等。它包含每种类型的子目录:main用于主要构建工件、test用于单元测试代码和资源、站点等。
因此,Surefire 插件将执行该文件夹中的测试;这可以通过testSourceDirectory参数进行配置。请注意,此目录是包含所有测试的基本源目录。这意味着,如果该基目录是,并且包中声明有somedir一个名为 的 Java 类,则磁盘上的文件必须位于.DemoTest.javafoo.barsomedir/foo/bar/DemoTest.java
这是您(错误)使用的参数test进入的位置:它仅通过名称选择要执行的 Java 类;不是通过其包声明,也不是通过文件在磁盘上的位置。
我建议您将测试类放在该标准目录中,但如果您确实想这样做,有多种选择:
如果您想要有一个测试源目录(位于TestJavaSrcMaven 项目的基本目录中),那么您可以在 POM 中使用以下命令进行配置:
<build>
<testSourceDirectory>${project.basedir}/TestJavaSrc</testSourceDirectory>
</build>
Run Code Online (Sandbox Code Playgroud)如果您想为该单独的测试创建一个特殊目录,也就是说您想保留默认目录src/test/java,但想另外考虑这个新的源目录,那么您可以使用add-test-sourceBuild Helper Maven 插件的目标:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.12</version>
<executions>
<execution>
<id>add-test-source</id>
<goals>
<goal>add-test-source</goal>
</goals>
<configuration>
<sources>
<source>TestJavaSrc</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)请注意,这两种方法都意味着demoTest.java直接位于该文件夹下的文件将位于默认包中,因此它不能有声明package。
| 归档时间: |
|
| 查看次数: |
4997 次 |
| 最近记录: |