2014-11-26
■[リーダブルコード]テストコード:テスト名はテスト機能名
どういうこと?
テスト関数は、テストする「メソッド」や「状況」でひとまとめにします。そして、その名前は以下のようにします。
Test_<対象メソッド名>_<状況>()
どうして?
テスト関数には、テストの内容を表した名前をつけるべきです。テストコードを読む人が、以下のことをすぐに理解できるようにするためです。
- テストするクラス
- テストする関数
- テストする状況やバグ
どうすれば?
テスト関数名は、テスト機能をうまく表現するように命名します。
例えば、「SortAndFilterDocs」というメソッドのテスト関数であれば、まずは「Test_」という接頭辞をつけて情報をひとまとめにします。
void Test_SortAndFilterDocs() {
...
}
次に、状況に応じてこのテスト関数を分割するかどうかを考えます。分割する場合は、「Test_<関数名>_<状況>()」という形式にします。
void Test_SortAndFilterDocs_BasicSorting() { ... } void Test_SortAndFilterDocs_NegativeValues() { ... } ...
長くて変な名前にならないかと怖がることはありません。他のコードから呼び出されるものではないので、長くなっても構いません。テスト関数の名前はコメントだと思えばいいのです。
ほとんどのテスティングフレームワークでは、テストが失敗したらその関数の名前が印字されるようになっています。だから、名前は説明的なほうが役に立ちます。
また、テストコードのヘルパー関数の名前は、アサートを使っているかどうかで分けるようにします。たとえば、「assert() を呼び出しているヘルパー関数は、すべて『Check...()』という名前にして、その他は普通のヘルパー関数のような名前にする」などのルールが考えられます。
トラックバック - http://d.hatena.ne.jp/asakichy/20141126/1416953136
リンク元
- 157 https://www.google.co.jp/
- 48 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=10&ved=0CFMQFjAJ&url=http://d.hatena.ne.jp/asakichy/20090825/1251161605&ei=dhd1VIHdGubvmAXM8oGYDA&usg=AFQjCNEIcaxrSZiBgHP1IcaaFpnhvImrSQ&bvm=bv.80642063,d.dGY
- 34 http://www.google.co.jp/url?url=http://d.hatena.ne.jp/asakichy/20140528/1401227759&rct=j&frm=1&q=&esrc=s&sa=U&ei=wgd1VIjJHoGgmQWIpILQCw&ved=0CBQQFjAA&sig2=jeweGrFLuTc7gQyHZ8uUKQ&usg=AFQjCNHAINe_Tq-2kGHNJqFJwu6uRVsD6Q
- 25 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&ved=0CCQQFjAB&url=http://d.hatena.ne.jp/asakichy/20120217/1329430230&ei=Mhx1VNHtEuHVmAXMwYDABQ&usg=AFQjCNEtYSFUfB5i3dr_Fn4W0ZkvsFZ-Tw&bvm=bv.80642063,d.dGY
- 17 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&frm=1&source=web&cd=1&ved=0CB0QFjAA&url=http://d.hatena.ne.jp/asakichy/20090527/1243385600&ei=uwx1VKm6MIiR8QWorYGYCw&usg=AFQjCNFdbazYCE3QWhxtTKxH-4P_BnAWrA&bvm=bv.80185997,d.dGY
- 14 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=3&ved=0CCkQFjAC&url=http://d.hatena.ne.jp/asakichy/20090702/1246495300&ei=MEJ1VOX7F9bl8AWLnYLwAw&usg=AFQjCNETrwuPMi_e0RgU14UlXBuTFiqe2w&sig2=yQf8y29tqzqhDMaNHEOdSw&bvm=bv.80642063,
- 10 http://feedly.com/
- 10 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=4&ved=0CDQQFjAD&url=http://d.hatena.ne.jp/asakichy/20111219/1324246076&ei=JCB1VNyvG8HDmwW-mIDYDA&usg=AFQjCNEz2jF5dzdJ2DOG7irxD4D8A9kkuw&bvm=bv.80642063,d.dGY
- 8 http://garoon.coreprice.com/scripts/cbgrn/grn.exe/schedule/view?uid=21&event=1052515&bdate=2014-12-01&nid=52139
- 7 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=5&cad=rja&uact=8&ved=0CD8QFjAE&url=http://d.hatena.ne.jp/asakichy/20111101/1320098249&ei=zhN1VJb5OcG3mAWCwICwCA&usg=AFQjCNGEvhphNusNe3zTbun19-hJ09poig&bvm=bv.80642063,d.dGY