測試也是開發(fā)過程中非常重要一環(huán),本博客介紹 Scala 開發(fā)的主要目的是為了日后的 Play 應用開發(fā)做基礎,開發(fā)環(huán)境采用 IntelliJ IDEA 集成開發(fā)環(huán)境。因此使用 IntelliJ 創(chuàng)建 Play 應用時缺省使用的測試包(基于 Spec2)
http://wiki.jikexueyuan.com/project/scala-spece2-test/images/1.jpg" alt="PIC" />
Play 應用缺省在 test 目錄下創(chuàng)建了兩個測試類: 為 ApplicationSpec 和 IntegrationSpec ,我們暫時不去管它們。以后在介紹 Play 開發(fā)時再說。
本系列博客介紹 Spec2 測試(其它測試使用的模板還可以是 scalatest, JUnit,TestNG),其測試的為通用的類(和 Play 特定的測試無關)。
Specs2 的測試規(guī)范分為兩大類型:
Specs2 測試為一種行為驅動測試方法,它的著重點在于使用可由人員的文字描述代碼期望的一些行為,配合測試代碼來驗證所需要測試的代碼符合期望的規(guī)范。
下面我們使用例子來說明一下兩種風格的測試規(guī)范:
單元測試規(guī)范派生于 org.specs2.mutable.Specification ,使用 should/in 的格式。
import org.specs2.mutable._
class HelloWorldUnitSpec extends Specification {
"HelloWorldUnit" should {
"contain 11 characters" in {
"Hello world" must have size(11)
}
"start with 'Hello'" in {
"Hello world" must startWith("Hello")
}
"end with 'world'" in {
"Hello world" must endWith("world")
}
}
}
驗收測試規(guī)范繼承自 org.specs2.Specification ,并且定義 is 方法。
import org.specs2._
class HelloWorldAcceptanceSpec extends Specification { def is = s2"""
This is a specification to check the 'Hello world' string
The 'Hello world' string should
contain 11 characters $e1
start with 'Hello' $e2
end with 'world' $e3
"""
def e1 = "Hello world" must have size(11)
def e2 = "Hello world" must startWith("Hello")
def e3 = "Hello world" must endWith("world")
}
運行測試的方法有很多種,在 Play 環(huán)境下,可以使用 play test 來運行,在 IntelliJ IDEA 可以通過菜單
http://wiki.jikexueyuan.com/project/scala-spece2-test/images/2.jpg" alt="PIC" />
如果需要運行或調試單個測試用例,可以在測試用例點擊右鍵,選擇
http://wiki.jikexueyuan.com/project/scala-spece2-test/images/3.jpg" alt="PIC" />