Scala单元测试

转载自: http://blog.sina.com.cn/s/blog_a3869e9a01017dcn.html

Scala 的单元测试可以使用Java的JUnit 或 Scala的ScalaTest、ScalaCheck等等。


简单示例:

       ScalaTest 提供了若干编写测试的方法,最简单的就是创建扩展 org.scalatest.Suite的类并在这些类中定义测试方法。Suite代表一个测试集。Scala 解释器中通过调用 execute 方法运行 Suite。特质 Suite的 execute方法使用反射发现测试方法并调用它们。ScalaTest 提供了名为 FunSuite的特质,重载了execute,从而可以让以函数值的方式而不是方法定义测试。
import org.scalatest.FunSuite

class UtilTest1 extends FunSuite {
    test("Util.getString 1") {
        val v = UtilObject.getString(1)
        assert(v == "1-str")
    }

    test("Util.getString 2") {
        val v = UtilObject.getString(2)
        assert(v == "2-str")
    }
}
       FunSuite里的“Fun”表示函数。“test”是定义在FunSuite中的方法,将被ElementSuite的主构造器调用。圆括号里的字串指定了测试的名称,名称需要唯一,大括号之间的是测试代码。测试代码是被作为传名参数传递给test的函数,并由test函数登记在册以备之后的运行。
       FunSuite的一个好处是不用给你所有的测试以“test”开头起名。而且,可以更容易地给测试起很长的名称,因为不需要把它们编码为驼峰形式,而对于测试方法就必须这么做了。

检查方法是否抛出了期待的异常,可以使用 ScalaTest 的 intercept 方法。
test("get execption") {
    intercept[Exception] {
        UtilObject.getExecption()
    }
}

如果大括号之间的代码被一个参数指定的异常类的实例突然中断,intercept 将返回捕获的异常,以便于之后进行检查。另一方面,如果代码没有抛出异常,或抛出了不同的异常,intercept将抛出 AssertionError,并且将在失败报告中得到错误消息。


如果需要使用mock的话可以使用org.mockito。



你可能感兴趣的:(Scala单元测试)