如何让sbt获取用groovy编写的测试?

如何让sbt获取用groovy编写的测试?,第1张

概述我找到了 sbt-groovy plugin并且它正确地编译了测试和主要来源.但是,definedTests键始终为空; SBT从未发现任何常规测试.我用一个非常简单的单个src / test / groovy / Test.groovy验证了这一点,其中一个注释@Test的方法应该被 junit-interface选中. 我认为问题的根源在于sbt-groovy插件需要在其own plugin 我找到了 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)在Analysis类中,该类由IncrementalCompiler的输出填充

我已经fiddled around with the taskdef了,但我不确定我是否在正确的道路上.关于这些东西的文档非常稀疏,或者与IncrementalCompiler密切相关.

在sbt-groovy中我需要用什么代码来生成满足SBT的Seq [TestDeFinition],以便我可以运行用Groovy编写的测试(由junit-interface选取)?

解决方法 测试检测代码在 Tests.discover,您可能会对此感兴趣.
您似乎只需要带有注释和子类列表的方法列表.
如果你有办法找到它们,你可能会模仿代码中发生的事情.

正如您所提到的,发现代码依赖于Analysis数据类型,它是内部的直觉
增量编译器.你或许可以利用它的事实
负责增量编译的sbt(不是Scala或Java编译器).
对于Java编译,AnalyzingJavaCompiler.compile调用编译器然后进行分析.

理论上,您可以定义使用相同机制的AnalyzingGroovyCompiler
作为用于Java编译的那个.从那以后,这不完全是在公园散步
一些部分隐藏在私人[sbt]后面.
简而言之,我整理了一个Hacky概念验证,它将增量编译器与生成Analysis for Groovy代码纠缠在一起,并且能够检测到测试.

> https://github.com/eed3si9n/sbt-groovy-test

我只测试了一个简单的用例

import org.junit.Testimport org.junit.Assertclass 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的未来版本.买者自负.

总结

以上是内存溢出为你收集整理的如何让sbt获取用groovy编写的测试?全部内容,希望文章能够帮你解决如何让sbt获取用groovy编写的测试?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1238135.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存