// assertメソッドで値のチェックをすることが出来る // 条件文が正しくなければAssertionErrorが出る assert(0 == 0, "説明文") // ensuringメソッドでブロックの戻り値をチェックすることも出来る { "aiueo" } ensuring (_.length == 5, "説明文") // assert と ensuring は両方ともPredefに定義されている // assert と ensuring はJava仮想マシンの-eaと-daのコマンド行オプションで有効・無効を切り替えられる
http://www.scalatest.org/ から scalatest-x.x.jar をクラスパスが通っているディレクトリに置く
import org.scalatest.FunSuite class TestSuite extends FunSuite { test("test(\"テストの説明\") { 実際のテストの処理 } という形にする"){} test("テスト項目を一時的に実行したくない場合は(pending)とする")(pending) test("== では比較した値が表示されない") { assert(1 == 2, "値が見れない><") } test("=== だと詳細が見えるので基本は === を使うといいっぽい。") { val (n1, n2) = (1, 2) assert(n1 === n2, "n1(1) は n2(2) じゃないよとちゃんと出る") } test("期待と結果が異なるということをはっきりさせたい場合は expect メソッドを使う") { // ブロックの戻り値で判定 expect(3, "3 が欲しかったけど違ったでござる") { 1 } } test("特定の例外が投げられたかをチェックしたい場合はinterceptメソッドを使う") { // IndexOutOfBoundsException を試しに投げてみる。 intercept[IndexOutOfBoundsException] { List(1, 2, 3)(-1) } intercept[IllegalArgumentException] { List(1, 2, 3)(-1) } } } (new TestSuite).execute()
Main$$anon$1$TestSuite: - test("テストの説明") { 実際のテストの処理 } という形にする - テストが未完成で一時的に実行したくない場合は(pending)とする (pending) - == では比較した値が表示されない *** FAILED *** 値が見れない>< (test.scala:9) - === だと詳細が見えるので基本は === を使うといいっぽい。 *** FAILED *** n1(1) は n2(2) じゃないよとちゃんと出る 1 did not equal 2 (test.scala:14) - 期待と結果が異なるということをはっきりさせたい場合は expect メソッドを使う *** FAILED *** 3 が欲しかったけど違ったでござる Expected 3, but got 1 (test.scala:18) - 特定の例外が投げられたかをチェックしたい場合はinterceptメソッドを使う *** FAILED *** Expected exception java.lang.IllegalArgumentException to be thrown, but java.lang.IndexOutOfBoundsException was thrown. (test.scala:24)
import org.scalatest.FunSuite import org.scalatest.matchers.ShouldMatchers // MustMatchersもあるけど違いは should か must なだけだと思う class TestSuite extends FunSuite with ShouldMatchers { test("ShouldMatchers を with すれば assert の変わりにより自然言語(しかし英語)の形に近い文法で処理できる") { // should be の後に () か === でチェックする値を指定する 10 should be(10) 10 should be === 5 } test("例外を受けとりたい場合は evaluating の後のブロックにテストを書きそのあと should produce [チェックしたい例外]にする") { // 試しに IndexOutOfBoundsException を投げてみる evaluating { List(1, 2, 3)(-1) } should produce [IndexOutOfBoundsException] evaluating { List(1, 2, 3)(-1) } should produce [IllegalArgumentException] } } (new TestSuite).execute()
Main$$anon$1$TestSuite: - ShouldMatchers を with すれば assert の変わりにより自然言語(しかし英語)の形に近い文法で処理できる *** FAILED *** 10 was not equal to 5 (test.scala:9) - 例外を受けとりたい場合は evaluating の後のブロックにテストを書きそのあと should produce [チェックしたい例外]にする *** FAILED *** Expected exception java.lang.IllegalArgumentException to be thrown, but java.lang.IndexOutOfBoundsException was thrown. (test.scala:15)
最新コメント