[英]How to run JUnit Test in maven if the test are not in test dir but in main dir and the classname are not having keywords like .*Test.*
这是背景。
我正在使用蚂蚁构建的项目。 当我们用来创建一个新的Class时,我们会在与ant支持的类相同的类中编写junit测试。ClassName没有'Test'命名约定。 超过800个Junit测试。
现在,我们需要转到Maven构建结构。 问题是,maven仅运行类名具有命名约定“ Test”的junit。
如何运行src / main / java / *中的junit测试?
另外,有没有办法可以拉出所有带有“ @Test”注释的方法?
如果您需要更多信息,请告诉我。
仅仅因为您曾经使用Ant来做过那样的事情,并不适合现在就继续使用它。 现在,您已经迁移到Maven,您必须遵循其做事方式并遵守其约定。 其中之一是使您的生产代码与测试分开。 混合是没有意义的,因为实际上您是在用无用的(对于代码的客户而言)方法乱扔代码。 尽管您可以继续这样做并找到解决方法,但这不是选择的高标准方法。
下一步真正需要做的是安排一些重构时间并执行以下任务:
创建src/test/java
(和分别创建src/test/java
src/test/resources
)。
为每个包含@Test
注释方法的类创建一个*Test
类,并将它们放在src/test/java
。
将这些方法移至相应的新类。
将所有仅由测试使用的资源移至src/test/resources
目录。
您必须更改运行测试的Surefire插件的配置。 我没有测试过,但是您可以尝试以下配置:
<build>
<testSourceDirectory>src/main/java</testSourceDirectory>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.16</version>
<configuration>
<includes>
<include>**/*.java</include>
</includes>
</configuration>
</plugin>
</plugins>
</build>
我想既然您正在使用ant,那么您有一个测试套件吗? 如果是这样,最简单的方法是更改配置以使用给定的测试套件:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.12.4</version>
<configuration>
<includes>
<include>AllTest.class</include>
</includes>
</configuration>
</plugin>
但是,我不确定它是否也会出现在src文件夹中,因此您可能必须将测试套件移至测试目录。
至于拉出所有带有@Test批注的方法(我假设没有套件?),如果您不遵循肯定测试类的命名约定,则必须自己做。 制作自己的测试运行器实现并不难,它可以在类路径或子文件夹中搜索所有类,然后找到符合条件的所有类并将其传递给Junit来运行。
如果您使用的是eclipse,则仍可以将其作为Junit测试执行。
实际上,如果您的“测试类”没有放在test文件夹中,则意味着您不打算在maven build操作中将它们作为“测试”运行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.