我有这么多java文件和那些java文件test.java不在src / test / java结构中。 例如:我在src / java / abc中有一个名为abc.java的java文件,但是这个名为abcTest.java的java文件的测试文件位于src / java / junit / abc中。 所以我将如何通过maven pom.xml对这个java文件进行junit测试,因为maven需要src / main / java中的普通java文件和src / test / java中的测试文件,以便我将如何通过maven进行测试?
我在我的pom.xml中添加了junit依赖项和surefire插件。
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
并且surefire插件是
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.10</version>
<configuration>
<testSourceDirectory>${basedir}/../src/java/junit/*.java</testSourceDirectory>
<testClassesDirectory>${project.build.directory}/classes/</testClassesDirectory>
<includes>
<include>abcTest.java</include>
</includes>
</configuration>
</plugin>
我已经给出了mvn test命令,但它仍然在日志中给出了零测试。任何人都可以帮我解决这个如何通过maven运行junit test.java文件的问题吗?
答案 0 :(得分:0)
假设您不能真正实现项目的结构,那么您必须自定义Surefire插件。
添加Junit依赖项已经足够 - 它只允许编译测试类。
因此,您正朝着正确的方向前进 - 您必须自定义负责运行测试的Maven Surefire插件。
现在,为了让Surefire插件运行不以*Test.java
结束的测试,您必须更改包含内容。也就是说,您必须指定能够反映您希望运行的测试名称的正则表达式。
This page就是这样描述的。
答案 1 :(得分:0)
在基本目录标记和junit测试用例成功运行后,我在pom.xml中添加了以下两行。现在我正在运行mvn install,我在test.java中的所有测试用例都在运行,虽然我没有像maven那样的结构。
<testSourceDirectory>${basedir}/../src/java/junit</testSourceDirectory>
<testOutputDirectory>${basedir}/target/test-classes</testOutputDirectory>
之后我添加了surefire插件,这就是我所有的junit测试用例都在运行。