LL脳がscalaの勉強を始めたよ その41
Scalaコップ本の14章の続きをやりますよー。14章はテスト関連なのですが、今回はJUnitとかそのあたりをやりますよ
JUnitとTestNGの使い方
Javaの世界でポピュラーな単体テストフレームワークのJUnitやTestNGをScalaコードで利用する方法について触れていきますよー
ScalaでJUnit
JUnitをScalaで使ってみようサンプルですよー、ちなみにjunitは別途用意しないとダメそうですねー(ここではJUnitからjarファイルを落としてきてscala -classpath
class Hoge { def moge = 2 def huga = 3 }
テスト用のファイル(HogeTest.scala)
import junit.framework.TestCase import junit.framework.Assert.assertEquals import junit.framework.Assert.fail class HogeTestCase extends TestCase { def testMoge(){ val h = new Hoge assertEquals(2, h.moge) try { h.huga + h.moge fail() }catch{ case e:IllegalArgumentException => print("エラーです") } } }
とりあえずそれっぽいソースは書いてみましたが…イマイチ実行方法がわかりません(´・ω・`)、これどうやってテストするの?
JUnitによるテスト実行
いろいろ調べてみたらJUnitをインポートしてコンパイルしたものを別途コマンドで執行ずればいいっぽい…ほんとか?
// コンパイルー $ scalac -cp junit.jar *.scala // 環境変数にJUnit関係の値をセット! $ export JUNIT_HOME=<JUNIT関連のディレクトリパス> $ export CLASSPATH=$JUNIT_HOME/junit-4.8.2.jar // junitファイル指定 // JUnit実行ー $ scala -cp junit.jar junit.textui.TestRunner HogeTest // おお、ちゃんと実行されて失敗したー .F Time: 0.003 There was 1 failure: 1) testMoge(HogeTest)junit.framework.AssertionFailedError: null at HogeTest.testMoge(HogeTest.scala:10) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at scala.tools.nsc.ObjectRunner$$anonfun$run$1.apply(ObjectRunner.scala:75) at scala.tools.nsc.ObjectRunner$.withContextClassLoader(ObjectRunner.scala:49) at scala.tools.nsc.ObjectRunner$.run(ObjectRunner.scala:74) at scala.tools.nsc.MainGenericRunner$.main(MainGenericRunner.scala:154) at scala.tools.nsc.MainGenericRunner.main(MainGenericRunner.scala) FAILURES!!! Tests run: 1, Failures: 1, Errors: 0
…と半ば無理やりですけどもJUnitを使ってみましたよー