Ant可以根据继承层次结构对JUnit测试进行分类吗



我正在处理一个遗留项目,该项目具有:

  • 纯单元测试
  • 集成测试(运行缓慢;有各种讨厌的依赖关系)

我正在寻找最简单的方法,用Ant分别运行这两种类型的测试。

我想知道是否有一种方法可以让Ant根据继承层次结构自动识别这两个类别:

StringUtilsTest extends TestCase  // "pure unit test"

ProductionDBTest extends AbstractTransactionalTesterBase // "integration test"

集成测试基于抽象超类的层次结构,但它们都归结为一些Spring测试类,最终是扩展junit.framework.TestCaseAbstractSpringContextTests

换句话说,在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+。

最新更新