Scala 例 Unit Test 単体テスト

JUnit

  • JUnitは、Scalaから当然のように使える。
  • EclipseからもJavaでかいたTestCaseと同じように実行できて便利。
package example.scala.list
import org.junit.Test
import org.junit.Assert._

class ListTest {

    case class TestBean(val a: String, val b: Int)

    @Test
    def testSortBy() {
        val test = List[TestBean](TestBean("c", 2), TestBean("a", 3), TestBean("b", 1))

        assertEquals(List[TestBean](TestBean("a", 3), TestBean("b", 1), TestBean("c", 2)), test.sortBy(_.a))
        assertEquals(List[TestBean](TestBean("b", 1), TestBean("c", 2), TestBean("a", 3)), test.sortBy(_.b))
    }

}

ScalaTest

ScalaTest

  • jarをクラスパスにとおせばふつうつかえる。
  • Eclipseからの実行は、Scalaアプリケーションとして、TestRunnerを指定することで実行できる。
    • org.scalatest.tools.Runner
    • まだ便利プラグインがあるわけではないようだ。
package example.scala.list
import org.scalatest.FlatSpec
import org.scalatest.matchers.ShouldMatchers

class ListSpec extends FlatSpec with ShouldMatchers {
    
    case class TestBean(val a: String, val b: Int)

    "SortBy" should "be able to sort by a field of TestBean" in {
        val test = List[TestBean](TestBean("c", 2), TestBean("a", 3), TestBean("b", 1))

        test.sortBy(_.a) should equal(List[TestBean](TestBean("a", 3), TestBean("b", 1), TestBean("c", 2)))
        test.sortBy(_.b) should equal(List[TestBean](TestBean("b", 1), TestBean("c", 2), TestBean("a", 3)))

    }
}