LL脳がscalaの勉強を始めたよ その42
Scalaコップ本章の続きを進めていきますよー、今回は前回途中で力尽きたScala的JUnitからTestNGらへんをやりますよー
JUnitとTestNGの使い方(続き)
前回やったようにJUnitでもScala書いたテストができるものの、Scalaの表明構文(assert)とかを使う場合はScalaTestのトレイトをミックスインしているJUnitのTestCase拡張のJUnit3SUiteを使うのがよいとのことです。
しかもJUnit3Suiteを使えばScalaTestのRunner上でこのテストが実行できるとのこと…JUnitで苦労した身からすれば最初からそっちが良いデスヨ…というわけでサンプルやってみますよ
前回予想外に時間を喰ってしまったので、復習がてらにScalaTestの内容を盛り込んでみますよ
// テスト対象のクラス class Hoge{ // メソッドです def moge = 2 // エラーを起こすメソッドです def huga(){ try{ throw new IllegalArgumentException }catch{ case ex:IllegalArgumentException => println("想定内のエラーです") } } } // JUnit3Suiteの読み込み import org.scalatest.junit.JUnit3Suite //テストケース class HogeSuite extends JUnit3Suite { // mogeメソッド用のテスト def testMoge(){ val h = new Hoge // 表明しますよ assert(h.moge === 2) // 期待通りかどうか判定しますよ expect(2){ h.moge } // 想定内のエラーが発生するか調べますよ intercept[IllegalArgumentException]{ h.huga() } } }
さて、サンプルを書いてみたものの、実行できないなぁ…
// junitとscalatest用のclasspathを通してみる $scalac -cp .:junit/junit.jar:scalatest/scalatest.jar *.scala // うーんエラーですねぇ…どうしたもんかなぁ error: error while loading JUnit3Suite, Scala signature JUnit3Suite has wrong version expected: 4.1 found: 5.0 test/HogeSuite.scala:5: error: illegal inheritance; self-type HogeSuite does not conform to org.scalatest.junit.JUnit3Suite's selftype org.scalatest.junit.JUnit3Suite class HogeSuite extends JUnit3Suite { ^ test/HogeSuite.scala:5: error: illegal inheritance; superclass JUnit3Suite is not a subclass of the superclass Object of the mixin trait ScalaObject class HogeSuite extends JUnit3Suite {
どうもエラーメッセージからするとJUnit3Suiteを継承できないとか何とか。。。原因がいまいち分からず、困ったなぁ(T_T)とりあえずグルグルしててもしょうがないのでJUnit関連は一旦ペンディングして先に進みますよ。。。
とりあえずメモ:ScalaTestとJUnitは相互運用できますよ
今日はい、いじょうデス
ギブアッッッッップ...orz
ここ2回は正直Javaワールドに返り討ちでした...次回はScalaTestに戻ります。specsとかScalaCheckとか...が、頑張ります...orz