我正在使用具有以下内容的遗留项目:
我正在寻找最简单的方法来与Ant一起运行两种类型的测试 。
我想知道是否有办法让Ant根据继承层次结构自动识别这两个类别:
StringUtilsTest extends TestCase // "pure unit test"
VS
ProductionDBTest extends AbstractTransactionalTesterBase // "integration test"
集成测试所基于的是抽象超类的层次结构,但它们都归结为一些Spring测试类,最终AbstractSpringContextTests
扩展为junit.framework.TestCase
。
换句话说,我可以在Ant中区分(间接)扩展AbstractSpringContextTests
的测试和直接扩展TestCase
的测试吗?或者我是否必须手动完成测试,例如将它们放在单独的Categories或TestSuites中? (有许多测试,所以我不想这样做。)
解决方案:我尝试过Sean(非常有前途的)approach,但无法轻松实现(轻松)。所以我最终半手动地完成了测试,使用this SO question中描述的设置注释纯粹的(小组),并使用Ant like this运行它们。 (请注意,编写自定义TestRunner 不是必要的。)
答案 0 :(得分:4)
我们用于分类JUnit测试的解决方案是使用自定义注释。然后,您可以使用自定义TestRunner,可以为其提供标记或参数,以确定要运行的测试类型或所有测试类型。
很抱歉,没有示例代码,但创建注释和TestRunner非常基本,请试一试!
答案 1 :(得分:2)
简单的方法是命名以测试类型
结尾的测试类让我们说我们正在测试日期。
DateTest.java(快速正常测试)
DateSysTest.java(长时间运行)
然后在快速单元测试中有两个目标
<batchtest todir="your dir">
<!--Run unit tests for each class with suffix Test, unless it is SysTest or StressTest-->
<fileset dir="${src}/test"
includes="**/*Test.java"
excludes="**/*StressTest.java **/*SysTest.java" />
</batchtest>
然后你创建了一些蚂蚁目标,一个用于快速测试,一个用于系统测试,一个用于完成所有这些。就像那样。 也就是说,如果您可以重命名测试类。
答案 2 :(得分:0)
我自己也没有用过这个。但我知道您表示单元测试作为资源集合运行,并且可以使用restrictions来定义。并且,一个可能的限制是“instanceof”,它允许您基于超类选择类。这使您可以选择集成测试,然后使用资源集合“差异”功能,您可以选择其他所有内容。不是太糟糕,如果不是微不足道的话。我认为这适用于Ant 1.8+。