【问题标题】:Running multiple junit testsuite in certain order using maven command使用 maven 命令以特定顺序运行多个 junit 测试套件
【发布时间】:2015-10-09 05:01:14
【问题描述】:

我想使用 maven 命令以特定顺序执行多个 junit testsuite。 我的测试套件名称如下,

  1. JunitXXXTestSuite
  2. JuitYYYTestSuite
  3. JunitZZZTestSuite

这些测试套件使用以下 maven 命令执行,

mvn -Dtest=JunitXXXTestSuite,JunitZZZTestSuite,JunitYYYTestSuite test -Dmaven.test.failure.ignore=true

我希望测试套件按照给定的顺序执行

  1. JunitXXXTestSuite
  2. JunitZZZTestSuite
  3. JunitYYYTestSuite

使用上面的maven 命令,测试套件每次都以随机顺序执行。有什么方法可以提及测试套件的执行顺序吗?

【问题讨论】:

  • 您为什么希望这些测试套件以特定顺序执行?他们相互依赖吗?如果是这种情况,您应该尝试重写它们,以便尊重 FIRST 原则:agileinaflash.blogspot.de/2009/02/first.html您将在维护中获得很多收益
  • 是的.. 与其他项目有一些依赖关系,应该只按这个特定的顺序执行
  • 这些测试套件正在执行 REST API 的 junit 测试用例,我们正在系统属性中动态保存一些值,这些值将用于其他项目。所以每个项目都有很多依赖。
  • 那么你真的应该尝试让测试套件独立。这可以通过在每个测试套件上创建一些初始化脚本来获得,这些脚本将环境(数据库、文件系统和您的系统属性...)置于给定状态。如果您需要这方面的帮助并且在网络上找不到任何答案,请发布一个新问题(并在此处通过评论通知我)
  • 我会试一试的。感谢@Benoit 的建议

标签: java maven junit continuous-integration


【解决方案1】:

创建另一个套件(说父套件)并在那边提到您的 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>

和你的maven命令如下,

mvn -Dtest=Parent test -Dmaven.test.failure.ignore=true

【讨论】:

  • 谢谢莫汉。但我使用的是 Junit 框架而不是 testNG。我创建了一个单独的父套件,并在其中提到了其他测试套件的顺序,它按预期工作。 @RunWith(Suite.class) @SuiteClasses({ com.test.commons.JunitXXXTestSuite.class, com.test.commons.JunitZZZTestSuite.class, com.test.commons.JunitYYYTestSuite.class }) public 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=JunitZZZTestSuite -Dmaven.test.failure.ignore=true 4. mvn -Dtest=JunitYYYTestSuite test -Dmaven.test.failure.ignore=true 如果你想要放弃所有运行,触发 Job1,如果你只想运行特定套件运行特定作业
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-12-04
  • 2014-11-23
  • 2011-04-29
  • 2014-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多