【问题标题】:use groovy script for maven unit test使用 groovy 脚本进行 maven 单元测试
【发布时间】:2016-08-29 12:24:47
【问题描述】:

如果我将 groovy 单元测试编写为类,那么 maven 将运行它们。但是,如果我将 groovy 单元测试编写为脚本,那么 maven 将忽略它们。 我的 pom 依赖于 groovy-all 和 junit,并使用 maven-compiler-plugin。 我可以使用 GroovyTestSuite 从命令行运行 groovy 脚本测试,在其中我将脚本添加到此然后运行它。 但希望将其作为 Maven 构建的一部分。 我看到了这个问题Execute external groovy script from Maven,但并不完全相同。 问候, 约翰

【问题讨论】:

  • groovy 脚本版本中的测试是否使用任何特定框架(例如 Spock)?如果没有,它们是否使用 JUnit 注释进行了注释,或者您只是编写脚本在运行时将生成的断言?
  • 没有框架(我相信)——我只是使用 groovy.util.GroovyTestCase 和 groovy 脚本。正如我所说,它在命令行上运行,但 Maven 并不将这些视为测试用例。那么是否有一个我应该使用的插件来获取脚本而不是类?

标签: maven groovy


【解决方案1】:

Groovy 脚本不会编译为 .class,因此用于单元/集成测试的 maven surefire/failsafe 插件不会从 testCompile 阶段实际运行任何内容。如果您准备将它们编写为 groovy 脚本,您将不得不使用不同的 maven 插件来运行脚本......但可能无法获得您通常会从 Surefire 之类的工具获得的 JUnit 结果输出。

由于 GroovyTestSuite 本身就是一个类,并且您想使用 Maven 来运行测试,我建议您将测试编写为实际的类文件而不是脚本。您还可以使用 maven 从命令行触发测试,这样就不会妨碍您的要求。走这条路将允许您在未来使用其他框架(例如 Spock!),同时让您保持在传统 maven/JUnit 约定的范围内。

现在,如果您确实将 Groovy 脚本设置为测试,您可以执行类似于 this solution 的操作并将配置为指向您的 groovy 脚本的执行目标绑定到 test 阶段。但是,除非您有非常明确的理由留在测试套件的 groovy 脚本领域,否则我不建议您走这条路。将您的测试套件编写为 groovy 类而不是脚本不应该让您失去任何额外的 groovy 功能​​。

【讨论】:

  • 是的,我认为你是对的——我最好坚持上课。我确实喜欢编写一个简单脚本的想法,但我认为额外的麻烦超过了这一点。非常感谢您的回复。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多