XCTestのテストメソッド名(Swift)

botman_blue iOS

Xcode-12.4 Swift-5.3

はじめに

テストのメソッド名ってどういうのがいいんだろう?と思って Poll してみました。これのお話です。

テスト名候補

テスト対象は下記メソッドです。

テストの候補としてあげたのは下記5つ(5番は Poll 対象外)です。

1番

なにも考えずに「テスト対象_条件_期待値」という形式で書いてみました。(Assert みればいいんで期待値は別に入れなくていい気もしました。)

2番

1番の変化型でテスト対象_条件(日本語)_期待値(日本語)で書いてみました。

テストメソッド名に関してはとくにコード書いて呼び出すわけではないので日本語でも問題ないのでは?と思ったりします(呼び出す場合はコード書いてるときに全角と半角変換繰り返さないといけないのでちょっとめんどそう。。。)。

3番

条件ごとにメソッドを分けていたのを XCTContext で分けるようにしてみました。

XCTContext で分けると下記のようにテストレポートが構造化されて見やすくなります。

test_report

私はテストレポートをあまりみたことないですが CI とかで便利なのかも?

4番

もう Assert みればわかるだろ!という感じでまとめてみました。

5番

パラメタライズドテストのメリット解説(Swift)をみて面白いなと思って真似してみました。

Poll の上限が4つだったので今回はテストパターンも多くないので候補からはずしました(きっとテストパターンが多いときに力を発揮してくれるはず)。

テスト失敗した場合は下記のように testCases のところにエラーが表示されます。

error

集計結果

結果はこんな感じでした(投票数は23人)。

テスト 投票数
1番 7人
2番 3人
3番 7人
4番 6人

どちらかと言うと1番と3番が人気?

個人的には2番の日本語で書くのはわかりやすいと思ったのですが、メソッド名を日本語にするのは受け入れられにくいかな?とも思うので折衷案の3番が好きです。

ちょっと考察

ありがたいことに下記のような意見をいただきました。

コード修正してテストが失敗した時に、次のことがストレス無く判断できれば良いと考えている。

・修正したコードに問題があるのか

・テストの期待値を修正すべきなのか

たしかに!テストコードをみるときっていつか?というとテストを失敗したときですね。

この観点でいくと今回のテスト対象が下記なのでテストが失敗したときにどちらを修正すべきかはパッとわからないですね。。。

テストとセットではじめてこのメソッドの動きがわかるようなつくりになってしまってます。

結論:メソッド名はちゃんとつけよう!

ちょっとサンプルが悪かった。。。

おわりに

テストを書くとしたら今回提示したどれでも問題ないと思いますが、わたしが書くとしたら3番で書こうかなと思います!

なによりも大事なことはテストを書くこと!
みなさんとりあえずプロジェクト作成時に下記にチェックをいれましょう!

create

コメント

タイトルとURLをコピーしました