如何使用Ant在类别/套件中运行所有JUnit测试?

琼尼克:

我在类似于此答案中所述的设置中使用了JUnit Categories和ClassPathSuite 回顾一下:

public interface FastTests {
}

@RunWith(Categories.class)
@Categories.IncludeCategory(FastTests.class)
@Suite.SuiteClasses(AllTests.class)
public class FastTestSuite {
}

@RunWith(ClasspathSuite.class) 
public class AllTests {
}

...其中AllTests使用ClasspathSuite库。

FastTests类别中的测试类如下所示:

@Category(FastTests.class)
public class StringUtilsTest {
    //  ...
}

当我在IDE中运行“ FastTestSuite”时,所有带有FastTests批注的测试都会很好且顺利地执行:

在此处输入图片说明

现在,我想对Ant进行同样的操作(令我惊讶的是,我无法轻松地在SO上找到相关的说明。)换句话说,我需要一个Ant目标,该目标运行带有FastTests批注的所有测试。

我已经尝试过使用<test><batchtest>...

 <junit showoutput="true" printsummary="yes">
     <test name="fi.foobar.FastTestSuite"/>
     <formatter type="xml"/>
     <classpath refid="test.classpath"/>
 </junit>

……到目前为止,还没有运气。

编辑:除了IDE,它在命令行上可以与JUnitCore一起正常工作:

$ java -classpath "classes:WebContent/WEB-INF/lib/*" org.junit.runner.JUnitCore fi.foobar.FastTestSuite
.............
Time: 0.189

OK (13 tests)
琼尼克:

是的,我可以<batchtest>很简单地使用它:

<junit showoutput="true" printsummary="yes" fork="yes">
    <formatter type="xml"/>
    <classpath refid="test.classpath"/>
    <batchtest todir="${test.reports}">
        <fileset dir="${classes}">
            <include name="**/FastTestSuite.class"/>
        </fileset>
    </batchtest>
</junit>

我已经尝试<batchtest>过了,但是却犯了一个愚蠢的错误,那就是使用"**/FastTestSuite.java"而不是"**/FastTestSuite.class"<include>元素中...抱歉:-)

注意:有必要进行设置fork="yes"(即在单独的VM中运行测试);否则,这也会在java.lang.reflect.Constructor.newInstance(Constructor.java:513)处产生“ initializationError”,例如<test>(请参阅问题注释)。但是,<test>即使使用,我也无法工作fork="yes"

唯一的缺憾是,这将产生只有一个JUnit的XML报告文件(TEST-fi.foobar.FastTestSuite.xml),这使得它看起来像所有的(几百个)的测试是在一个类(FastTestSuite)。如果有人知道如何调整此设置以在其原始类和程序包中显示测试,请告诉我。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

JUnit4使用测试套件在特定软件包中运行所有测试

运行除IntelliJ中的JUnit类别以外的所有测试

如何运行所有JUnit测试并在Ant中失败时停止运行?

如何在JUnit 4中运行属于某个类别的所有测试

Ant,运行所有jUnit测试

如何使用参数在ant中运行特定的junit测试?

如何对套件中的所有测试用例应用JUnit @Rule

如何从代码中运行整个JUnit测试套件

在Junit 4中运行所有测试

使用Junit运行所有测试之后,如何获取多个测试类的测试结果

当在PHPUnit中运行特定的测试套件时,如何跳过慢速测试,而当我需要完整的代码覆盖时仍然运行所有测试?

检测Junit测试类是在套件中运行还是单独运行

量角器测试套件运行不在文件夹中的所有测试

使用Ant构建器运行所有单元测试

如何使用Selenium和JUnit 5在不同的URL上运行整个测试套件

如何使用 xUnit 运行 Canopy 测试套件?

如何运行基于 JUnit5 的测试套件?

使用Ant仅运行特定的JUnit测试

JUnit @Parameterized函数在测试套件中的@BeforeClass之前运行?

如何运行所有修改过的JUnit测试类?

如何从NetBeans运行所有JUnit测试用例?

使用Maven和Bitbucket管道运行单个JUnit测试套件

如何以编程方式在Java应用程序中运行所有JUnit测试?

如何在JUnit 4测试套件中获得测试集合

SoapUI:是否有单独的测试套件可以运行GroovyScript TestStep来检查其他测试套件中的所有其他测试用例?

春季测试仅在运行测试套件中的所有测试之后才关闭上下文

如何分析junit测试套件?

Logtalk:运行所有测试套件的最佳方法是什么?

如何使用Robot Framework从测试套件中运行特定的测试用例