如何让sbt获取用groovy编写的测试?
我找到了
sbt-groovy plugin并且它正确地编译了测试和主要来源.但是,definedTests键始终为空; SBT从未发现任何常规测试.我用一个非常简单的单个src / test / groovy / Test.groovy验证了这一点,其中一个注释@Test的方法应该被
junit-interface选中.
我认为问题的根源在于sbt-groovy插件需要在其own plugin source code中定义任务“definedTests”.此任务提供了Seq [TestDefinition]. 看看SBT本身如何填充序列显示它使用了scala编译器的附加输出(这也适用于编译java文件,因此它可以直接用于java)在 我已经fiddled around with the taskdef了,但我不确定我是否在正确的道路上.关于这些东西的文档非常稀疏,或者与IncrementalCompiler密切相关. 在sbt-groovy中我需要用什么代码来生成满足SBT的Seq [TestDefinition],以便我可以运行用Groovy编写的测试(由junit-interface选取)? 解决方法
测试检测代码在
Tests.discover ,您可能会对此感兴趣.
您似乎只需要带有注释和子类列表的方法列表. 如果你有办法找到它们,你可能会模仿代码中发生的事情. 正如您所提到的,发现代码依赖于Analysis数据类型,它是内部的直觉 理论上,您可以定义使用相同机制的AnalyzingGroovyCompiler > https://github.com/eed3si9n/sbt-groovy-test 我只测试了一个简单的用例 import org.junit.Test import org.junit.Assert class Foo { @Test public void foo() { Assert.assertEquals(1,2) } } 从sbt运行测试得到以下输出: > test [info] Start Compiling Test Groovy sources : /Users/xxx/sbt-2167-groovy/src/test/groovy [error] Test Foo.foo failed: expected:<1> but was:<2>,took 0.062 sec [error] Failed: Total 1,Failed 1,Errors 0,Passed 0 [error] Failed tests: [error] Foo [error] (test:test) sbt.TestsFailedException: Tests unsuccessful [error] Total time: 1 s,completed Aug 23,2015 5:05:01 AM 它可能不适用于sbt的未来版本.买者自负. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |