2011年8月8日月曜日

Scalaでユニットテスト

ターミナルとかプロンプトで実行する場合。

scalatestと、JUnitのページからそれぞれ必要なjarファイルをダウンロードする。(今回はJUnit4)
結果的にscalatest-1.5.1.zipとjunit-4.9b3.jarが手に入る。
scalatestは解凍するとscalatest-1.5.1.jarがあるので、こいつとjunit-4.9b3.jarをScalaのインストールディレクトリ内にあるlibディレクトリの中に突っ込んで準備完了。
libディレクトリに置いておきたくない場合は、コンパイル時と実行時に毎回クラスパスに該当jarを指定すること。

テストのサンプルソースは以下のとおり。
プログラミング言語Scala 日本語情報サイト01.02.JUnit 4 と ScalaTest の始め方の物をそのまま使わせていただいています。(先頭にコメントを追加)

//import org.scalatest.junit.AssertionsForJUnit
import org.scalatest.junit.JUnitSuite
import scala.collection.mutable.ListBuffer
import org.junit.Assert._
import org.junit.Test
import org.junit.Before


/**
 * /////////////////////////////////////////////////////////////////////////////////////////////
 * Scalaでユニットテストのサンプル
 * クラスパスに、JUnitとscalatestのjarファイルを加えておく必要がある。
 * 通常の開発環境であれば、SCALA_HOME/lib/の下に置いておけば自動的にクラスパスに含まれるので楽。
 * /////////////////////////////////////////////////////////////////////////////////////////////
 * JUnitで実行する場合は以下のコマンド
 * scala org.junit.runner.JUnitCore ExampleSuite
 *
 * scalatestで実行する場合は以下のコマンド
 * scala org.scalatest.tools.Runner -p . -o -s ExampleSuite
 * ちなみに、 -p . の . を省けばSwingウインドウが起動する
 *
 * どちらで実行する場合でも、JUnitSuiteを継承していれば問題無し。JUnitSuiteはAssertionsForJUnitをtraitとして使っている
 */
//class ExampleSuite extends AssertionsForJUnit {
class ExampleSuite extends JUnitSuite {

    var sb:StringBuilder = _
    var lb:ListBuffer[String] = _

    @Before def initialize() {
        sb = new StringBuilder("ScalaTest は")
        lb = new ListBuffer[String]
    }

    // JUnitスタイルのアサーションを使用
    @Test def verifyEasy () {
        sb.append("かんたん!")
        assertEquals("ScalaTest はかんたん!", sb.toString)
        assertTrue(lb.isEmpty)
        lb += "sweet"
        try {
            "verbose".charAt(-1)
            fail()
        } catch {
            case e:StringIndexOutOfBoundsException => // こうなるはず
        }
    }

    // ScalaTest アサーションを使用
    @Test def verifyFun() {
        sb.append("たのしい!")
        assert(sb.toString == "ScalaTest はたのしい!")
        assert(lb.isEmpty)
        lb += "sweeter"
        intercept[StringIndexOutOfBoundsException] {
            "concise".charAt(-1)
        }
    }
}

2011年8月2日火曜日

gedit(Ubuntu)でドイツ語のスペルチェック

ドイツ語の勉強に、しっかり身につくドイツ語トレーニングブック を使っているのですが、さすがに手書きをしていると時間がかかりすぎるので、パソコンで練習問題をやっています。
エディタにはgeditを使っているのですが、geditにはスペルチェック機能が付いています。
これは勉強が捗るぞ!と思ったのですが、標準ではドイツ語はUbuntu(日本ローカライズされたVirtualBox用のUbuntu)でサポートされていないようなので、手動でインストールした結果、geditで正しくドイツ語のスペルチェックが出来るようになりました。

ドイツ語のインストール方法は、
システム→システム管理→言語サポート→言語のインストールと削除→ドイツ語にチェックを入れる→変更を適用
これでOKです。