在Scala中使用JUnit的TestSuite

最近又开始看《Agile Java》来学习TDD开发。我似乎又要开始分心了,真是作死的节奏。

《Agile Java》本质上还是本面向Java新手的书籍,里面的大部分都可以很快扫过,因为已经有Java基础了。不过我的想法是趁着正在学Scala——Scala也应该可以使用JUnit来进行单元测试的——就用上Scala跟着这本书来学习TDD吧。

前面简单试下来,使用JUnit的确是没有问题的。不过到了第二课,使用测试套件时,碰见了点问题。

测试套件是在有多个TestCase的时候用来方便管理测试的工具。

书中,用来测试Java的代码是这样的:

运行即可。这段代码,只要新建一个Java类,运行,也是一样可以用来测试Scala代码的。不过既然用了Scala,我就想改成使用Scala的。

转换也不难:

因为原本有一个静态方法,所以使用对象来定一个方法,但单单一个对象没法运行,于是再加一个类。这段代码也可以运行了。

我的误区在于,对Scala还不够熟悉:不知道Java中 .class 的写法在Scala中对应的是 classOf[] 。结果写出来的代码总是有错,觉得奇怪就去看JUnit的Wiki。结果发现书上用的方法是Junit4之前的(书有点老了),4之后,已经变成了另一种写法。官方的示例:

如果将之改写成:

这样是不行的,会提示RunWith没有apply方法(( )在Scala中被解释成apply方法)。于是我去找解决方法。

找来找去,感觉非用ScalaTest这个高级货不行了,不然拯救不了我。不过我一时贼心未死,按照这个post再试了一次,不知为什么OK了!!~

然后经过我的检查,是因为我在class前面空了一行的缘故…感觉说多了都是泪啊(T.T)。基础不扎实惹的祸。

在Java中,花括号{}内放一组东西表示一个数组,这个与Scala中不同,所以需要有点改动。最后的代码如下了: