我正在使用SBT和Play!框架.目前我们在我们的管道中有一个提交阶段,我们在其中发布我们的二进制文件.使用dist任务生成二进制文件.然后管道运行用scala编写的冒烟和验收测试.他们与sbt一起运行.
我想要做的是编译烟雾和验收测试以及二进制文件并将它们发布到artifactory.这将允许管道下载这些二进制文件(测试套件)并运行它们,而不是每次都重新编译它们,这需要很长时间.
我试过sbt test:compile生成jar,但是我找不到运行测试的方法.
我找到了sbt-groovy插件,它恰当地编译了测试和主要来源.但是,definedTests密钥总是空的; SBT从未发现任何常规测试.我已用一个非常简单src/test/groovy/Test.groovy的单一方法验证了这一点,其中一个方法是注释的@Test,应该由junit-interface选取.
我认为问题的根源在于sbt-groovy插件需要在自己的插件源代码中定义任务"definedTests" .这个任务提供了一个Seq[TestDefinition].
看看SBT本身如何填充序列显示它使用来自scala编译器的附加输出(这也适用于编译java文件,因此它可以开箱即用,适用于java),这个Analysis类由一个类填充.IncrementalCompiler
我已经摆弄了taskdef,但我不确定我是否在正确的道路上.关于这些东西的文档相当稀疏,或者与它有很大的联系IncrementalCompiler.
在sbt-groovy中我需要用什么代码来生成Seq[TestDefinition]满足SBT的代码,以便我可以运行用Groovy编写的测试(由junit-interface选取)?