“跳过surefire的执行,因为它已经为此配置运行了”?

时间:2012-12-31 20:28:51

标签: maven command-line automated-tests testng surefire

请原谅新问题 - 我的概念模型仍然不完整......

我正在尝试使用maven和surefire从命令行重新执行TestNG测试。我的命令行如下:

D:\workspaces\workspace01\aptest>mvn clean install surefire:test -Dtests=myTestNGSuite test

显然我没有得到它,因为我最终得到的输出包括:

[INFO] --- maven-surefire-plugin:2.10:test (default-test) @ aptest ---
[INFO] Skipping execution of surefire because it has already been run for this configuration

如何清除配置,以便从命令行重新运行TestNG套件?有没有更好的方法从命令行运行TestNG套件?

TIA, - >亚伦

2 个答案:

答案 0 :(得分:3)

根据你给出的命令

mvn clean install surefire:test -Dtests=myTestNGSuite test

BTW:参数测试应该命名为 test

表示运行安装life-cycl e,这意味着要执行以下步骤:

  • 验证
  • 初始化,
  • 产生来源,
  • 过程来源,
  • generate-resources,
  • process-resources,
  • 编译,
  • 过程的类,
  • generate-test-sources,
  • process-test-sources,
  • 生成测试资源,
  • process-test-resources,
  • test-compile,
  • process-test-classes,
  • 测试,
  • prepare-package,
  • 包,
  • 预集成测试,
  • 集成测试,
  • post-integration-test,
  • 验证,
  • 安装

你可以看到,在这个生命周期内,测试阶段已经运行了...换句话说, surefire:test 没有意义也没有测试会像这样运行生命周期:

  • 验证
  • 初始化,
  • 产生来源,
  • 过程来源,
  • generate-resources,
  • process-resources,
  • 编译,
  • 过程的类,
  • generate-test-sources,
  • process-test-sources,
  • 生成测试资源,
  • process-test-resources,
  • test-compile,
  • process-test-classes,
  • 测试,

因此,要在TestNG中运行套件,就可以像这样调用Maven:

mvn -Dtest=myTestNGSuite test

或者如果您在此之前运行测试生命周期,则可能会缩短:

mvn -Dtest=myTestNGSuite surefire:test

此外,通常你不应该在JUnit和TestNG中使用测试套件,因为maven-surefire-plugin会自动识别正确位置(src / test / java)中的单元测试。所以没有必要编写测试套件。顺便说一下,你应该定义一个更新的maven-surefire-plugin版本(同时2.13)。

答案 1 :(得分:2)

surefire插件的测试目标在测试阶段自动运行,因此第一次运行

 mvn clean install -Dtest=MyTestNGTest

然后如果你想重新开始做

mvn install -Dtest=MyTestNGTest

请注意,我没有调用干净的目标,因此只会重新编译测试用例或代码的更改,而且我不会调用surefire插件的测试目标。