我正在处理一个遗留项目,该项目具有:
- 纯单元测试
- 集成测试(运行缓慢;有各种讨厌的依赖关系)
我正在寻找最简单的方法,用Ant分别运行这两种类型的测试。
我想知道是否有一种方法可以让Ant根据继承层次结构自动识别这两个类别:
StringUtilsTest extends TestCase // "pure unit test"
与
ProductionDBTest extends AbstractTransactionalTesterBase // "integration test"
集成测试基于抽象超类的层次结构,但它们都归结为一些Spring测试类,最终是扩展junit.framework.TestCase
的AbstractSpringContextTests
。
换句话说,在Ant中,我能区分(间接)扩展AbstractSpringContextTests
的测试和直接扩展TestCase
的测试吗?或者我必须手动完成测试,例如将它们放在单独的类别或测试套件中?(有很多测试,所以我不想这么做。)
解决方案:我尝试了Sean(非常有前途)的方法,但无法(轻松)实现。因此,我最终以半手动的方式完成了测试,使用这个So问题中描述的设置注释了纯测试(这是一个较小的组),并像这样用Ant运行它们。(请注意,编写自定义TestRunner不是必需的。)
我们用于对JUnit测试进行分类的解决方案是使用自定义注释。然后,您可以将自定义TestRunner与之一起使用,该TestRunner可以被赋予运行哪些测试类型或所有测试类型的标志或参数。
抱歉,没有示例代码,但创建注释和TestRunner是非常基本的,请尝试一下!
简单的方法是命名以测试类型结尾的测试类
假设我们在测试日期。
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>
然后创建几个蚂蚁目标,一个用于快速测试,一个进行系统测试,还有一个全部完成。。类似的东西。也就是说,您是否可以重命名测试类。
请注意,我自己还没有用过这个。但我知道,您将单元测试表示为作为资源集合运行,并且这些测试可以用限制来定义。一个可能的限制是"instanceof",它允许您基于超类选择类。这使您可以选择集成测试,然后使用资源集合"差异"函数可以选择其他所有测试。不算太糟,如果不是微不足道的话。我认为这适用于Ant 1.8+。