LL脳がscalaの勉強を始めたよ その42


Scalaコップ本章の続きを進めていきますよー、今回は前回途中で力尽きたScalaJUnitからTestNGらへんをやりますよー

JUnitTestNGの使い方(続き)

前回やったように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は相互運用できますよ

TestNG

ScalaTestはJavaのテストフレームワークのもう一つの有名どころTestNGとも相互運用できますよって内容デス

。。。といったところにサンプル込みで踏み込もうと思ったものの、コマンドラインからのTestNGの利用方法がうまく見つけられなかったのでこの節はScalaTestがあればTestNG使いも幸せの巻。。。という一言でお茶を濁そうと思います(T_T)

とりあえずScalaTestからTestNGを利用するにはTestNGSuiteを利用すればOKよ!ってことで

反省と展望

JUnitTestNGを触れるようになっておくこと...orz

...上記テストフレームワークに関する情報のほとんどがEclipseありきの話がほとんど(探索不足の可能性大ですが...)だったんだけど、世のJavaコミュニティーIDEありきが当たり前なのかしら...とちと疑問...あった方が便利なんだろうけどVim教徒にとってハードル高いっす(T_T)

今日はい、いじょうデス

ギブアッッッッップ...orz

ここ2回は正直Javaワールドに返り討ちでした...次回はScalaTestに戻ります。specsとかScalaCheckとか...が、頑張ります...orz