Scala 中的参数化单元测试(使用 JUnit4)
有没有办法用 Scala 实现参数化单元测试?目前,我在其余程序中使用 JUnit4,并且我想继续仅使用“标准”API。
我找到了 Junit4 with Groovy 的示例,但我在定义 static< 时遇到问题/代码> 零件。可能是,因为我对 Scala 也很陌生 :-)
我目前的速度是
import org.junit.Test import org.junit.Assert._ import org.junit.runner.RunWith import org.junit.runners.Parameterized import org.junit.runners.Parameterized.Parameters @RunWith(classOf[Parameterized]) class MyTest extends junit.framework.TestCase { @Parameters object data { ... } @Parameter ... @Test def testFunction() = { }
Is there a way to implement a parameterized unit test with Scala? Currently I use JUnit4 in the rest of my programs and I would like to continue using only "standard" APIs.
I found an example for Junit4 with Groovy, but I have problems defining the static
parts. Could be, because I am also quite new with Scala :-)
I am currently as fas as
import org.junit.Test import org.junit.Assert._ import org.junit.runner.RunWith import org.junit.runners.Parameterized import org.junit.runners.Parameterized.Parameters @RunWith(classOf[Parameterized]) class MyTest extends junit.framework.TestCase { @Parameters object data { ... } @Parameter ... @Test def testFunction() = { }
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这确实很麻烦,但它确实有效。我发现了两件重要的事情:伴生对象必须在测试类之后出现,返回参数的函数必须返回AnyRef(或对象)数组的集合。 Any 数组不起作用。这就是我使用 java.lang.Integer 而不是 Scala 的 Int 的原因。
输出应该符合预期:
That's quite a nuisance, but it works. Two important things I discovered: companion object must come after test class, the function returning the parameters must return a collection of arrays of AnyRef (or Object). arrays of Any won't work. That the reason I use java.lang.Integer instead of Scala's Int.
The output should be as expected:
使用 ScalaTest 或 Specs 可能会更好。后者绝对支持参数化测试,并且在 Scala 社区中广泛使用。 JUnit 的参数化测试语法非常糟糕,而且它对静态声明的依赖不会让你在 Scala 中的任务变得更容易(可能你需要一个伴随对象)。
You are probably better off with ScalaTest or Specs. The latter definitely supports parameterized tests, and is widely used in the Scala community. JUnit's syntax for parameterized tests is pretty horrible, and its reliance on static declarations won't make your task easier in Scala (probably you need a companion object).