“Skipping execution of surefire because it has already been run for this configuration”?

≯℡__Kan透↙ 提交于 2019-12-11 00:57:09

问题


Please excuse the newb question - my conceptual models are still quite incomplete...

I'm trying to re-execute TestNG tests from a command line using maven and surefire. My command line looks like:

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

Clearly I'm not getting it because the output I end up with includes:

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

How do I clear out the configuration so I can re-run my TestNG suite from the command line? Is there a better way to run TestNG suites from the command line?

TIA, -->Aaron


回答1:


The test goal of the surefire plugin is automatically run in the test phase so the first time just run

 mvn clean install -Dtest=MyTestNGTest

and then if you want to re run do a

mvn install -Dtest=MyTestNGTest

Note that I am not calling the clean goal so that only your changes of test cases or code are recompiled and that I am NOT invoking the test goal of the surefire plugin.




回答2:


Based on the command you've given

mvn clean install surefire:test -Dtests=myTestNGSuite test

BTW: Where the parameter tests should be named test

which means to run through the install life-cycle which means to run through the following steps:

  • validate
  • initialize,
  • generate-sources,
  • process-sources,
  • generate-resources,
  • process-resources,
  • compile,
  • process-classes,
  • generate-test-sources,
  • process-test-sources,
  • generate-test-resources,
  • process-test-resources,
  • test-compile,
  • process-test-classes,
  • test,
  • prepare-package,
  • package,
  • pre-integration-test,
  • integration-test,
  • post-integration-test,
  • verify,
  • install

as you can see that within this life-cycle the test phase has already been run...in Other words the surefire:test does not make sense nor the test which would run the life-cycle like this:

  • validate
  • initialize,
  • generate-sources,
  • process-sources,
  • generate-resources,
  • process-resources,
  • compile,
  • process-classes,
  • generate-test-sources,
  • process-test-sources,
  • generate-test-resources,
  • process-test-resources,
  • test-compile,
  • process-test-classes,
  • test,

So to run the suite within TestNG it is sufficient to call Maven like this:

mvn -Dtest=myTestNGSuite test

or if you have run the test life cylce before this can be shortent to:

mvn -Dtest=myTestNGSuite surefire:test

Furthermore usually you shouldn't use test suites neither in JUnit nor in TestNG cause maven-surefire-plugin will automatically recognize the unit tests within the correct locaiton (src/test/java). so there is no need to write Test Suites. BTW you should define an more up-to-date version of the maven-surefire-plugin (2.13 in the meantime).



来源:https://stackoverflow.com/questions/14105820/skipping-execution-of-surefire-because-it-has-already-been-run-for-this-configu

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!