5

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

我正在尝试使用 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,-->亚伦

4

2 回答 2

3

根据您给出的命令

mvn clean install surefire:test -Dtests=myTestNGSuite test

顺便说一句:参数测试应该命名为test

这意味着运行安装生命周期e 意味着运行以下步骤:

  • 证实
  • 初始化,
  • 生成源,
  • 过程源,
  • 生成资源,
  • 流程资源,
  • 编译,
  • 进程类,
  • 生成测试源,
  • 过程测试源,
  • 生成测试资源,
  • 过程测试资源,
  • 测试编译,
  • 过程测试类,
  • 测试,
  • 准备包,
  • 包裹,
  • 预集成测试,
  • 集成测试,
  • 集成测试后,
  • 核实,
  • 安装

如您所见,在此生命周期内,测试阶段已经运行......换句话说,surefire:test没有意义,也没有像这样运行生命周期的测试:

  • 证实
  • 初始化,
  • 生成源,
  • 过程源,
  • 生成资源,
  • 流程资源,
  • 编译,
  • 进程类,
  • 生成测试源,
  • 过程测试源,
  • 生成测试资源,
  • 过程测试资源,
  • 测试编译,
  • 过程测试类,
  • 测试,

所以要在 TestNG 中运行套件,像这样调用 Maven 就足够了:

mvn -Dtest=myTestNGSuite test

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

mvn -Dtest=myTestNGSuite surefire:test

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

于 2013-01-01T00:16:17.467 回答
2

Surefire 插件的测试目标是在测试阶段自动运行,所以第一次运行

 mvn clean install -Dtest=MyTestNGTest

然后如果你想重新运行做一个

mvn install -Dtest=MyTestNGTest

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

于 2013-01-01T00:12:13.010 回答