Java 使用maven命令以特定顺序运行多个JUnitTestSuite

Java 使用maven命令以特定顺序运行多个JUnitTestSuite,java,maven,junit,continuous-integration,Java,Maven,Junit,Continuous Integration,我想使用maven命令按一定顺序执行多个junittestsuite。 我的测试套件名称如下所示 JunitXXXTestSuite Juityyyy测试套件 JUnitzzTestSuite 这些测试套件使用下面的maven命令执行 mvn -Dtest=JunitXXXTestSuite,JunitZZZTestSuite,JunitYYYTestSuite test -Dmaven.test.failure.ignore=true 我希望testsuites按照给定的顺序执行,如下所示

我想使用maven命令按一定顺序执行多个
junit
testsuite。 我的测试套件名称如下所示

  • JunitXXXTestSuite
  • Juityyyy测试套件
  • JUnitzzTestSuite
  • 这些测试套件使用下面的maven命令执行

    mvn -Dtest=JunitXXXTestSuite,JunitZZZTestSuite,JunitYYYTestSuite test -Dmaven.test.failure.ignore=true
    
    我希望testsuites按照给定的顺序执行,如下所示

  • JunitXXXTestSuite
  • JUnitzzTestSuite
  • JUnityyTestSuite
  • 使用上面的
    maven
    命令,testsuites每次都以随机顺序执行。有什么方法可以提到testsuite执行的顺序吗?

    创建另一个套件(比如父套件),在那里提到您的3个套件,然后运行父套件

    <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
    <suite name="Parent" preserver-order="true">
        <suite-files>
            <suite-file path="JunitXXXTestSuite.xml"></suite-file>
            <suite-file path="JunitZZZTestSuite.xml"></suite-file>
            <suite-file path="JunitYYYTestSuite.xml"></suite-file>
        </suite-files>
    </suite>
    
    创建另一个套件(比如父套件),并在那里提到您的3个套件,然后运行父套件

    <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
    <suite name="Parent" preserver-order="true">
        <suite-files>
            <suite-file path="JunitXXXTestSuite.xml"></suite-file>
            <suite-file path="JunitZZZTestSuite.xml"></suite-file>
            <suite-file path="JunitYYYTestSuite.xml"></suite-file>
        </suite-files>
    </suite>
    


    为什么要按特定顺序执行这些测试套件?他们相互依赖吗?如果是这样的话,你应该试着重写它们,使它们尊重第一原则:你会在维护中获得很多是的。。与其他项目之间存在一些依赖关系,应该按此特定顺序执行。只有这些测试套件正在执行REST API的junit测试用例,我们正在系统属性中动态保存一些值,这些值在其他项目中使用。因此,每个项目都有很多依赖关系,那么您应该真正尝试使测试套件独立。这可以通过在每个测试套件上创建一些初始化脚本来实现,这些脚本将环境(数据库、文件系统和系统属性…)置于给定状态。如果你需要这方面的帮助,但在网上找不到任何答案,请发布一个新问题(并在这里用评论通知我),我会尝试一下。感谢@benoitwo的建议。您为什么希望这些测试套件按特定顺序执行?他们相互依赖吗?如果是这样的话,你应该试着重写它们,使它们尊重第一原则:你会在维护中获得很多是的。。与其他项目之间存在一些依赖关系,应该按此特定顺序执行。只有这些测试套件正在执行REST API的junit测试用例,我们正在系统属性中动态保存一些值,这些值在其他项目中使用。因此,每个项目都有很多依赖关系,那么您应该真正尝试使测试套件独立。这可以通过在每个测试套件上创建一些初始化脚本来实现,这些脚本将环境(数据库、文件系统和系统属性…)置于给定状态。如果你需要这方面的帮助,但在网上找不到任何答案,请发布一个新问题(并在这里用评论通知我),我会尝试一下。谢谢你的建议@BenoitThanks mohan。但我使用的是Junit框架,而不是testNG。我已经创建了一个单独的父套件,并在其中提到了其他测试套件的顺序,它正在按预期工作<代码>@RunWith(Suite.class)@SuiteClasses({com.test.commons.JunitXXXTestSuite.class,com.test.commons.junitzztestsuite.class,com.test.commons.junityyyytestsuite.class})公共类JunitParentSuite{}。但问题是我无法在父测试套件中硬编码套件名称。我正在使用maven命令从jenkins运行junit。有时我只需要运行一个测试套件。如果我遵循这种方法,我需要在父套件中进行更改,并在svn中提交。在maven命令中指定必要的测试套件名称对我来说似乎是最好的解决方案,但这并不是按照特定的顺序执行测试套件:(为什么不创建另一个作业?每个测试套件都是相关的。通过截取我理解的是使用以下maven命令创建四个作业,[如果我出错,请更正]1.mvn-Dtest=Parent test-Dmaven.test.failure.ignore=true 2.mvn-Dtest=JunitXXXTestSuite-Dmaven.test.failure.ignore=true 3.mvn-Dtest=junitzztestsuite-Dmaven.test.failure.ignore=true 4.mvn-Dtest=junityytestsuite test-Dmaven.test.failure.ignore=true如果要放弃所有运行,如果只想运行特定的套件,则触发Job1un-specific job感谢mohan。但我使用的是Junit框架,而不是testNG。我创建了一个单独的父套件,并在其中提到了其他测试套件的顺序,它正在按预期工作。
    @RunWith(suite.class)@SuiteClasses({com.test.commons.JunitXXXTestSuite.class,com.test.commons.junitzztestsuite.class,com.test.commons.JunitYYYTestSuite.class})公共类JunitParentSuite{}
    。但问题是我无法在父测试套件中硬编码套件名称。我正在使用maven命令从jenkins运行junit。有时我只需要运行一个测试套件。如果我采用这种方法,我需要在父套件中进行更改并在svn中提交。在maven命令中指定必要的测试套件名称如下对我来说,最好的解决方案是不按特定顺序执行测试套件:(为什么不创建另一个作业?每个测试套件都是独立的。通过截取我理解的是使用以下maven命令创建四个作业,[如果我错了,请更正]1.mvn-Dtest=Parent test-Dmaven.test.failure.ignore=true 2.mvn-Dtest=JunitXXXTestSuite-Dmaven.test.failure.ignore=true 3.mvn-Dtest=junitzztestsuite-Dmaven.test.failure.ignore=true 4.mvn-Dtest=junityytestsuite test-Dmaven.test.failure.ignore=true如果要放弃所有运行,如果只想运行特定的套件,则触发Job1非特定工作