我是一个相对较新的团队成员,致力于一个非常古老的遗留java服务(大约2005年)。我们针对这个服务的单元测试集的结构非常糟糕,因为大多数是具有类名(如“operationtests1”、“operationtests2”)的遗留junit3测试,并且没有配置的测试名。这些junit3测试类中的每一个都被手动添加到一个名为“alltests”的套件中,然后运行该套件并使用cobertura收集覆盖率数据。
由于这个测试套件的结构和大小(大约有2000个测试,其中一个复杂的类型层次结构从扩展junit3的testcase扩展而来),重构是不可能的。
在某个时候,我的团队开始迁移到JUnit4,在使用ApacheAnt运行我们的混合测试套件时遇到了一个问题,因为只有JUnit3测试被选中并运行。在我们的办公室里有一个变通办法 build.xml
我们创建一个包含 AllTests.class
然后手动包含每个JUnit4测试类。i、 e.结构如下:
<fileset id="coverage.tests" dir="${basedir}/tst">
<include name="com/mycompany/AllTests.class"/>
<!-- JUnit 4 Test Classes Below -->
<include name="com/mycompany/some/nested/directory/structure/Junit4TestClass.class"/>
<include name="com/mycompany/some/nested/directory/structure/AnotherJunit4TestClass.class"/>
...
</fileset>
引入这种模式的团队成员已经不在公司了,也没有留下任何关于它如何工作或为什么工作的文档。
手动包含这些JUnit4测试类是一个主要的、经常被遗忘的接触点,这导致我们在进行代码评审时出现了我们预期运行的失败单元测试。如果可能的话,我想消除或缓和这个接触点。
有没有一种方法来构造我们的文件集,这样我们就可以在文件集中包含任何和所有JUnit4测试类,而不必手动指定它们?或者在apacheant+cobertura中有没有其他方法来管理混合的junit3/4测试套件?
暂无答案!
目前还没有任何答案,快来回答吧!