測(cè)試也是開發(fā)過程中非常重要一環(huán),本博客介紹 Scala 開發(fā)的主要目的是為了日后的 Play 應(yīng)用開發(fā)做基礎(chǔ),開發(fā)環(huán)境采用 IntelliJ IDEA 集成開發(fā)環(huán)境。因此使用 IntelliJ 創(chuàng)建 Play 應(yīng)用時(shí)缺省使用的測(cè)試包(基于 Spec2)
http://wiki.jikexueyuan.com/project/scala-spece2-test/images/1.jpg" alt="PIC" />
Play 應(yīng)用缺省在 test 目錄下創(chuàng)建了兩個(gè)測(cè)試類: 為 ApplicationSpec 和 IntegrationSpec ,我們暫時(shí)不去管它們。以后在介紹 Play 開發(fā)時(shí)再說。
本系列博客介紹 Spec2 測(cè)試(其它測(cè)試使用的模板還可以是 scalatest, JUnit,TestNG),其測(cè)試的為通用的類(和 Play 特定的測(cè)試無關(guān))。
Specs2 的測(cè)試規(guī)范分為兩大類型:
Specs2 測(cè)試為一種行為驅(qū)動(dòng)測(cè)試方法,它的著重點(diǎn)在于使用可由人員的文字描述代碼期望的一些行為,配合測(cè)試代碼來驗(yàn)證所需要測(cè)試的代碼符合期望的規(guī)范。
下面我們使用例子來說明一下兩種風(fēng)格的測(cè)試規(guī)范:
單元測(cè)試規(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")
}
}
}
驗(yàn)收測(cè)試規(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")
}
運(yùn)行測(cè)試的方法有很多種,在 Play 環(huán)境下,可以使用 play test 來運(yùn)行,在 IntelliJ IDEA 可以通過菜單
http://wiki.jikexueyuan.com/project/scala-spece2-test/images/2.jpg" alt="PIC" />
如果需要運(yùn)行或調(diào)試單個(gè)測(cè)試用例,可以在測(cè)試用例點(diǎn)擊右鍵,選擇
http://wiki.jikexueyuan.com/project/scala-spece2-test/images/3.jpg" alt="PIC" />