2016-04-03 3 views
0

単体テストを支援するために擬似オブジェクト(およびすべてのテストダブル)が使用されますが、それらにコードが含まれるため、テストする必要がありますか?ユニットテスト:私は偽のオブジェクトをテストすべきですか?

一方で、これらはすべてコードなのでテストする必要があります。一方、プロダクションコードではないため、テストすることはあまり重要ではありません。

私は偽のオブジェクトのテストを書こうとしますが、しばしば時間がかからず、デバッグ時間を大幅に節約することができますが、それらのテストはまだ変わってしまいます。偽のオブジェクトによって

私がGerard Meszaros definition意味:

偽のオブジェクトは、私たちがなしで行うことを選択し 副作用なしDOCによって提供される機能 のはるかに簡単かつ軽量の実装です。

+0

擬似オブジェクトとは何ですか?モック?あなたはどうやってそれをテストするのですか? – Amit

+1

"fake"という単語が過負荷になっています。擬似オブジェクトが意味するものをより明確に指定する必要があります。また、どのような方法でテストするのか、期待するものなどを指定する必要があります。 – kai

+1

単純にモックや単純な擬似オブジェクトを使用することはできませんが、非常に複雑な擬似オブジェクトが必要な場合は、コードに問題があるという兆候かもしれません。明らかに、テストは無限に行うことができます。テストを作成し、次にテストをテストするテスト、次に元のテストをテストするテストをテストする新しいテストなどです。しかし、通常はそうしていませんが、テストを簡単にしてテストする必要はありません。擬似オブジェクトと同じこと。実際に非常に複雑な擬似オブジェクトが必要な場合は、それらをテストしたり、コードをリファクタリングしてもう不要にする(望ましい)ことができます。 –

答えて

0

システムが要件を満たしているかどうかをテストする必要があります。正確にすべてをテストすることは不可能です。

偽のオブジェクトのアイデアは静的なデータを持つクラスインスタンスを提供するだけで、この特定の値で何が起こるかを確認できます。

システムがすべてのクラスでどのように動作しているかを確認できる統合テストを行うことをお勧めします。問題がある場合、ユニットテストは、正確にどこに問題があるかについてより具体的になるかもしれません。だから、ユニットテストに、コンポーネントが他のコンポーネントとの依存関係を持つことができhttp://www.infoq.com/presentations/kill-better-test

+0

"システムが要件を満たしているかどうかをテストする必要があります。"これはユニットテストのポイントではありません。要件は、単体テストではなく受入れテストによってテストされます。 –

0

あなたが他のコンポーネントを偽造されているコンポーネントを - このプレゼンテーションはあなたに良いアイデアを与えること -

あなたはすべての後にテストをテストする場合

「被検査部品」が依存しているが、これは絶対に良いものである。単体テストは、コンポーネントを他のコラボレーションコンポーネントとの統合ではなく、単独でテストするためです。

第2に、現在のコンポーネントの単体テストのために偽造しているコラボレーションコンポーネントの製品バージョンが必要です。その場合、この場合は偽造した各共同コンポーネントの実動バージョンのユニットテストも必要です。

基本的なルールは、各コンポーネントを独立して、または独立して適切に単体テストする場合です。統合されている間は、動作するはずです。しかし、コンポーネントを一緒にテストしたい場合は、統合テストと呼ばれます。

1

偽物がプロダクションコードではない場合でも、偽物が正しいと判断されない場合は、この偽物の正しい実行に依存するため、テストする必要があります。私は、たとえプロダクトコードでなくても、プロジエクト内のロジックを含む関数がテストされるべきだと思います。

関連する問題