対象のプロダクトコードに対して、Unit Testが可能な最小単位を「Method」とする。
各「Method」をテストするための「Test method」を複数用意してゆく事になる。
この「Test method」をテストケースと呼ぶ事にする。
これらの「Test method」は当然何らかのクラスに属する事になる。
このクラスを「Testcase Class」と呼ぶ事にする。
各テストケースの入れ物である「Testcase Class」をどういった単位で設けるべきか?
各「Method」をテストするための「Test method」を複数用意してゆく事になる。
この「Test method」をテストケースと呼ぶ事にする。
これらの「Test method」は当然何らかのクラスに属する事になる。
このクラスを「Testcase Class」と呼ぶ事にする。
各テストケースの入れ物である「Testcase Class」をどういった単位で設けるべきか?
●Testcase Class per Class ・・・ テスト対象のクラスに対して「Testcase Class」を設ける。
- プロダクトコードとテストコードの紐づけが一目瞭然。
- Test methodの増加に伴い、テスト用のクラスが肥大化する。
- 各Test methodが必要とするFixture(Fixture setup)が共通とは限らない。
●Testcase Class per Feature ・・・ 同一のFeatreに属するテストケースをグルーピングする。
●Testcase Class per Fixture ・・・ 同一のFixtureに属するテストケースをグルーピング。
パターンの使い分け。
「Unit tests for stateful objects and each method needs to be tested in each state of object」
⇒「Testcase Class per Fixture」を選択する方が良い。
「Customer tests against a Service facade」
「Prebuilt Fixture、つまりFixture setupが各Testcaseごとに必要とならない場合」
⇒「Testcase Class per Feature」を選択する方が良い。
[私的には]
C0,C1といったカバレッジ網羅を目的とするテストについては「Testcase Class per Class」とし、
Fixture setupが異なるものについては随時Testcase Classを分割してゆく。
上記とは別に、Feature drivenで作成するTestCaseについては「Testcase Class per Feature」とし、
Fixture setupが異なるものについては随時Testcase Classを分割してゆく。
という管理が良さそう。
0 件のコメント:
コメントを投稿