如果我将groovy单元测试作为类编写,那么maven会运行那些。但如果我将groovy单元测试编写为脚本,那么maven会忽略它们。 我的pom依赖于groovy-all和junit,并使用maven-compiler-plugin。 我可以使用GroovyTestSuite从命令行运行groovy脚本测试,我在其中添加脚本然后运行它。 但是想要将其作为maven构建的一部分。 我看到了这个问题Execute external groovy script from Maven,但并不完全相同。 问候, 约翰
答案 0 :(得分:1)
Groovy脚本不能编译为.class,因此单元/集成测试的maven surefire / failsafe插件将没有从testCompile阶段到实际运行的任何内容。如果您将它们设置为groovy脚本,则必须使用不同的maven插件才能运行脚本...但可能无法获得通常来自Surefire之类的JUnit结果输出。
由于GroovyTestSuite本身就是一个类,并且您希望使用Maven来运行测试,我建议将测试编写为实际的类文件而不是脚本。您还可以使用maven触发测试从命令行运行,这样就不会妨碍您的要求。使用这条路线将允许您将来使用其他框架(例如Spock!),并使您处于传统maven / JUnit约定的范围内。
现在,如果您确实将Groovy脚本设置为测试,则可以执行与this solution类似的操作,并将执行目标(配置为指向您的groovy脚本)绑定到{{1阶段。但是,除非你有一个非常明确的理由留在你的测试套件的groovy脚本领域,否则我不建议你去那条路线。将测试套件编写为groovy类而不是脚本不应该让你失去任何额外的groovy功能。