TestNGで日本語メソッド名のテストケースを実行する
現在のプロジェクトではユニットテストにTestNGを使用しています。
なぜJUnitでなくTestNGを選択したかはまたの機会に。
さて、eclipseにTestNGのプラグインをインストールするとコンテキストメニューからTestNGを実行することができます。
もちろん、テスト単位で実行できますし、メソッド単位で一つ一つ実行することもできます。
が、メソッド名に日本語を使用している場合は実行時にUTF-8じゃないよと怒られてテストができません。
org.testng.TestNGException: com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: Invalid byte 1 of 1-byte UTF-8 sequence. at org.testng.TestNG.initializeSuitesAndJarFile(TestNG.java:334) at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:86) at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:199) at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:170)
あるケースだけ確認したいのに毎回毎回クラス単位やスイート単位で実行するのもアレなので、対応を行います。
対応内容は簡単。メソッドを選択して実行する際のエンコードが環境依存になっているので、eclipse自体のencodeをUTF-8にするだけです。
eclipse.iniに下記を追加します。
-Dfile.encoding=utf-8
eclipseを起動したままであれば再起動すると日本語名のテストケースを実行できます。
とはいえ、この設定は別にTestNGには関係無く、eclipse自体のデフォルトエンコードを指定してあげるので、
例えばeclipseでファイルを開くと勝手にShift-JISになってしまって設定が面倒とかにも対応出来ます。
もちろん、JUnitでも同様だと思われます。今度試してみます。