ユニットテストの偏りを防ぐ命名規則の付け方

公開日: : 最終更新日:2015/10/15 プログラム ,

ユニットテスト名に以下の命名規則を付けるようにして二ヶ月ぐらい経った。

  • 正常系テストの場合: 正常系_${testName}
    • ${testName} の部分には「何を確認するテストなのか」を書く
  • 準正常系テストの場合: 準正常系_${testName}
  • 異常系テストの場合: 異常系_${testName}

この命名規則にしてからのメリットをメモしておく。

icatch-2015-005-1

photo credit: Brian Chan via unsplash

目次

1. 命名規則導入のメリット

メリットと感じるのは次の2点。

  1. パッと見てどんなテストなのか分かりやすい
  2. テストの種類が偏らない

当然だが何系のテストなのかパッと見て分かる。
ユニットテストのメソッド名は日本語で書く(これも分かりやすさのため)ので「正常系」とかが付いていても全く違和感がない。

この命名規則を付けるようになって、準正常系・異常系のテストが少ないことに気付かされたのは大きかった。
不備があったら結局は自分に返ってくる。
そうならないために準正常系・異常系テストを書く意識が増えたのは良かった。

2. 命名規則導入のデメリット

デメリットというか困っているのは、Maven の mvn test を実行して失敗したテストがあると日本語部分が読めないこと。
これはターミナルの設定で解決する問題なのだろうか?

3. Templates のエクスポートファイル

Eclipse の Templates 機能を使えばユニットテストの雛形を登録でき、コンテンツアシスト機能により素早くテストを作成できる。

以下の雛形を登録して日々の開発を行っている。

【正常系テスト】

@Test
public void 正常系_testName() throws Exception {
    // setup
    // exercise
    // verify
}

【準正常系テスト】

@Test
public void 準正常系_testName() throws Exception {
    // setup
    // exercise
    // verify
}

【異常系テスト】

@Test
public void 異常系_testName() throws Exception {
    // setup
    // exercise
    // verify
}

上記の雛形の定義を Eclipse からエクスポートした。

これを適当な名前で保存して Eclipse にインポートすると(もしくは個別に登録すると)、コンテンツアシストでの保管が有効になる。

  1. Java ソースコードを開いて “test” と入力
  2. この状態でコンテンツアシストを実行
  3. ダイアログに上記の3パターンが表示されれば OK

4. 更新履歴

  • 2015/10/14: 初版作成
  • 2015/10/15: 内容の修正

Googleアドセンス用(PC)

  • このエントリーをはてなブックマークに追加
  • follow us in feedly

関連記事

20140811-00

64ビット版のCentOSをVMwareにインストールできない場合の対処法

Linux で検証したい作業が多かったので VMware に検証環境を作りました。OS は Cent

記事を読む

icatch_5428744075-resized

scp を使ってファイルのコピーを実行したら “command not found” と表示されたときの対処法

CentOS が起動しているサーバに scp を使ってファイルをコピーしようとコマンドを実行したら

記事を読む

icatch-medium_4301351732-resized

mp3splt を実行して “undefined symbol: mp3splt_u_check_if_directory” と出力されたときの対処法

mp3 ファイルを分割してくれる mp3splt というライブラリがあります。 mp3 ファイルを

記事を読む

icatch-2015-002

Optionalから値を取り出すにはorElseGet()を使う

「Optional が値を持っていない場合のみ ◯◯ を実行する」を実装するときは Optional

記事を読む

icatch-8587724648_24926df337_z-resized

yum のリポジトリ ATrpms を参照できるように設定する

あるツールの動作検証をしようと調べたところ、そのツールは ATrpms リポジトリが提供しているとの

記事を読む

icatch-9214710040_822a4c3456_z-resized

ロードアベレージを監視するシェルスクリプトを作成してみた

このブログを運用している Linux サーバの負荷が高い状態になってました。 何か被害にあったとかで

記事を読む

icatch_8617990318-resized

yum が参照するミラーサイトの baseurl を変更して日本国内のものに設定する

yum が参照するリポジトリのミラーサイトは変更することができます。 このミラーサイトを日本国内のも

記事を読む

icatch-sublimetext_9222613858_mini-thumbnail

Sublime Text3 のインストール直後に行った設定メモ

突発的に自宅のマシンにインストールしてあった Sublime Text2 を 3 にアップデートしま

記事を読む

no image

GoogleGuavaのRangeを使って範囲判定を簡潔に書く

次のような判定処理を if 文で書くことがよくある。 もし 100 よりも大きければ(=大小判定

記事を読む

icatch-2015-004-1

Vagrantで起動したCentOS上のOctopressをホストOSから確認する設定

タイトルの通りだが、Vagrant を使って起動した CentOS に Octopress をインス

記事を読む

Googleアドセンス用(PC)

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


7 + 六 =

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Googleアドセンス用(PC)

icatch-jersey_multi_pathparams
Jerseyの@PathParamはスラッシュの間に複数指定できる

http://hoge-api/user/{id}.{format}

icatch-vagrant_box_customize
VagrantのBoxファイルをカスタマイズして独自のBoxファイルを作成する

配布されている Vagrant の Box ファイルを使って検証環境を

icatch-2015-006-1
バリデーションチェックにJava8のOptionalを使ってスマートに書く(自分比)

Web アプリのバリデーションチェックにアノテーションを使うことが増え

icatch-2015-005-1
ユニットテストの偏りを防ぐ命名規則の付け方

ユニットテスト名に以下の命名規則を付けるようにして二ヶ月ぐらい経った。

icatch-2015-004-1
Vagrantで起動したCentOS上のOctopressをホストOSから確認する設定

タイトルの通りだが、Vagrant を使って起動した CentOS に

→もっと見る

PAGE TOP ↑