2012-01-12 9 views
2

パブリックな内部クラスのパブリックメソッドをテストする必要がありますか?あるいは、内部クラスを使用する外部クラスパブリックメソッドをテストする必要があります(プライベートメソッドのテストと同じアプローチ)。publicな内部クラスをテストする必要がありますか?

+2

あなたが書き込むすべてのメソッドをテストする必要があります(内部かどうかにかかわらず)。 –

+0

特に外部クラスでテストされていないメソッドや機能をテストする必要があります。 –

+2

@エリート紳士 - 絶対にありません。 1行または2行の長さであり、分岐ロジックまたはループロジックを持たないポイントテストメソッドはありません。唯一の呼び出しメソッドが既にテストされている場合は、プライベートメソッドをテストする点はありません。 –

答えて

3

クラス外からアクセス可能なものすべてをテストする必要があります。これには、内部クラスのパブリックメソッド(クラス自体がパブリックかプライベートかにかかわらず)が含まれます。

メソッドを公開する場合は、メソッドをテストする必要があります。

3

外部クラスメソッドが内部クラス1への呼び出しを委譲するだけであれば、それらのうちの1つだけをテストすることができます。どちらが本当に問題ではありません。このケースでは、あなたのデザインを再考したいと思うかもしれません - 過度の委任は私の経験では悪いデザインを意味します。

外部クラスメソッドは、単に内部クラスのメソッドを呼び出すと、あなたはこのように個別にそれらの両方をテストする必要がありますよりも、他の重要である何か他のものない場合:

  • テストだけで内部クラスのメソッドを
  • テストだけモック内部クラスメソッドと外部クラスメソッド(可能であれば)
  • テスト外側のクラスメソッド
2

何が「必須」ではありません。あなたは合理的なテストを行う必要がありますが、機能テストに焦点を当て、ラインカバレッジではありません。あなたのコードは何かをテストする必要があります。

ビジネス・ロジックが内部クラス・メソッドにある場合は、これらを直接テストし、内部をトップ・レベル・クラスに変換するのに役立ちます。あなたがテストカバレッジでカップリングを導入する場合は、それが何をするかによって、外部をテストするだけで十分ですが、クラスが内部クラスであるため、カップリングはすでにそこにあります。

0

これらの要件がどのように実装されているかにかかわらず、クラスがすべての要件を満たしていることをテストする必要があります。各メソッドのテストを記述しないでください。むしろ、どの要件が実装されているか、それぞれの要件でカバーされているさまざまなケースがあるかどうかに基づいて、必要なテストを実施します。内部クラスやプライベートメソッドなどを記述しているかどうかは、テストプロセスとは無関係です。

関連する問題