JUnit执行所有包的所有测试类

时间:2019-02-25 07:09:10

标签: java junit

有没有办法一次构建JUnit的所有测试用例?就像通过命令“ rake test”在“ Ruby on rails”上执行所有测试类一样。对于Java,我看到了在包中执行所有测试的一些解决方案。但我想对所有软件包执行所有测试用例。可能吗?我该如何对build.xml文件进行处理?

2 个答案:

答案 0 :(得分:0)

我还不能添加评论,这就是为什么我将其发布为答案。

我认为您需要的是测试套件类。

类似如下。

package com.emeter.test.predeploy.sdm.common;

import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import org.junit.runners.Suite.SuiteClasses;

import com.emeter.test.predeploy.sdm.svc.TestOutdatedComponentRpt;
import com.emeter.test.predeploy.sdm.svc.TestSubstationSvc;
import com.emeter.test.predeploy.sdm.svc.TestSvmComponentSvc;
import com.emeter.test.predeploy.sdm.svc.TestSvmNotificationSvc;

@RunWith(Suite.class)
@SuiteClasses({

TestSubstationSvc.class,
TestSvmComponentSvc.class,
TestSvmNotificationSvc.class,
TestOutdatedComponentRpt.class
 }
)
public class TestSuite {

}

您可以从任何包中导入所需的类,然后立即运行它们。包含测试用例的类放在“ SuiteClasses”注释下。

编辑:您就像在Eclipse中测试其他测试用例文件一样运行它。

答案 1 :(得分:0)

您可以运行按程序包名称或类名称筛选的所有测试或特定测试。 以下是从JUnit Task manual提取的<batchtest>的示例:

<junit printsummary="yes" haltonfailure="yes">
    <classpath>
        <pathelement location="${build.tests}"/>
        <pathelement path="${java.class.path}"/>
    </classpath>

    <formatter type="plain"/>

    <test name="my.test.TestCase" haltonfailure="no" outfile="result">
        <formatter type="xml"/>
    </test>

    <batchtest fork="yes" todir="${reports.tests}">
        <fileset dir="${src.tests}">
            <include name="**/*Test*.java"/>
            <exclude name="**/AllTests.java"/>
        </fileset>
    </batchtest>
</junit>

您可以根据需要调整<include name=""/> / <exclude name=""/>元素,或添加更多包含/排除元素。然后,您可以为<target/><target name="all-tests"/>等不同的测试创建不同的蚂蚁<target name="package-foo-tests"/>