Scala单元测试

来源:互联网 发布:java hadoop基础 编辑:程序博客网 时间:2024/06/04 01:21
转载自: 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.FunSuiteclass 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。



0 0
原创粉丝点击