単体テストメソッド名に日本語を使おう


JUnitを使った単体テストメソッドの命名

Javaプロジェクトで単体試験を書く際、JUnitないしはそれ以外の派生ライブラリで書くときのお話です。

そのテストメソッド名ですが、謎なコーディング規約に従って無理やりヨクワカラン英単語を並べてしまい、結局何のテストしているのかわからない名前になってしまい、その結果、疲弊することも多いでしょう。

実はJavaのメソッド名に日本語などのマルチバイト文字を適用しても問題ありません。特に、テストで期待する結果を日本語で書いたほうがわかりやすいこともあるでしょう。

  • 「一覧結果に日本語が書かれていると、何のテストしているのかわかりやすい」
  • 「改修後のテストの要否がわかりやすい」
  • エクセルで実行結果を求めて印刷物で納品を要求してくる地獄のようなお客様にも対応しやすい

などなど。

利用例

以下の例はMockitoもあわせて使った、簡単な利用例です。

IPCheckServiceTest
import static org.junit.Assert.*;
import static org.mockito.Mockito.*;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;

@RunWith(MockitoJUnitRunner.class)
public class IPCheckServiceTest {

    @Mock
    IPCheckService service;

    @Before
    public void before() throws Exception {
        service = spy(new IPCheckService());
        service.start();
    }

    @After
    public void after() throws Exception {

    }

    @Test
    public void test成功するIPアドレス() throws Exception {
        assertTrue( service.check("127.0.0.1") );
    }

    @Test
    public void test失敗するIPアドレス() throws Exception {
        assertFalse( service.check("192.168.0.7") );
    }
}

EclipseのJUnitランチャーで実行した結果、なんとなく見やすいですよね。

これをエクセルへ出力するなど工夫することで、印刷を強要する地獄でもニッコリではないでしょうか。