这里是背景。
我正在开发一个使用 ant build 的项目。当我们用来创建一个新的类时,我们使用在ant支持的同一类中编写junit测试。类名没有“测试”命名约定。有超过 800 个 Junit 测试。
现在我们需要转到 Maven 构建结构。问题是 maven 只运行类名具有命名约定“测试”的 junit。
如何运行 src/main/java/* 中的 junit 测试?
另外,有没有办法可以提取所有具有“@Test”注释的方法?
如果您需要任何进一步的信息,请告诉我。
这里是背景。
我正在开发一个使用 ant build 的项目。当我们用来创建一个新的类时,我们使用在ant支持的同一类中编写junit测试。类名没有“测试”命名约定。有超过 800 个 Junit 测试。
现在我们需要转到 Maven 构建结构。问题是 maven 只运行类名具有命名约定“测试”的 junit。
如何运行 src/main/java/* 中的 junit 测试?
另外,有没有办法可以提取所有具有“@Test”注释的方法?
如果您需要任何进一步的信息,请告诉我。
仅仅因为您以前使用 Ant 就那样做,并不意味着现在继续使用它是正确的。现在您已经迁移到 Maven,您必须遵守它的做事方式并遵循它的约定。其中之一是将您的生产代码与测试分开。混合没有意义,因为您实际上是在用无用的(对于您的代码的客户)方法乱扔代码。虽然您可以继续这样做并找到解决方法,但这不是选择的高标准路线。
下一步你真正需要做的是安排一些重构时间并执行以下任务:
创建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 测试执行。
实际上,如果您的“测试类”没有放在测试文件夹中,则意味着您不打算在 Maven 构建操作中将它们作为“测试”运行。