Tagbangers Blog

テストメソッドの名前

プログラマならクラス、メソッド、変数などのネーミングに迷うことが必ずあると思います。
昔、テキトーにつけてしまった変数名やメソッド名たち・・・振り返ってみると、
なんでこんなセンスのない名前にしてしまったんだ・・・こうしておけば良かった・・・って思うこと、ありますよね?

ネーミングは非常に重要! プログラムの半分以上はネーミングだ!
そう豪語している方がいましたね。半分以上かは知りませんが、本当に重要だと思います。

正直、ネーミングはセンスが問われる部分もあると思いますが、最低限逸脱しないためのルールというものが必要なので、 社内でもある程度の指針は存在しています。

その中で、今回はJunitのテストメソッドについてどんなルールで運用しようか考えていました。

@Test
public void ユーザが作成できる() {
    User user = new User();
    //・・・略
}

@Test
public void 名前入力がない時はユーザが作成できない() {
    User user = new User();
    //・・・略
}

こんな感じでメソッド名に日本語を使用したこともありますが、やはり英語の方がカッコ良いかと。
何より弊社のWallrideは海外の方々にも見ていただいているのです。


できるだけシンプルなものが良いので、いま考えているのは以下のような感じです。
今回のような単純なユーザ作成のメソッドであれば、正常系のメソッドが1つ、その他が異常系。

@Test
public void createUser() {
    User user = new User();
    //・・・略
}

@Test
public void createUserWithoutName() {
    User user = new User();
    //・・・略
}

@Test
public void createUserWithInvalidEmail() {
    User user = new User();
    //・・・略
}


命名規則

  • 正常系は検査するメソッド名と同じ
  • 異常系は検査するメソッド名+条件 (振舞いの結果は含まない)



複雑な処理をするメソッドだとこうはいかない事もあると思いますが、そういう場合は設計自体を見直すチャンスかもしれません。
異常系が大量にある場合は1まとめにしても良さそうな気もしますが、どうなんだろう!