1

データベース内のレコードを表す抽象的な Record クラスがあります。各レコードには、少なくとも次の列が必要です: id、created、updated。

次に、特定のテーブルの行を表すように Record クラスを拡張します。たとえば、Record を拡張する次のクラスがあります: Customer、Job、Location、および Company。これらのそれぞれで、静的な「table_name」変数と、それらの列を表す静的変数を定義します。

Record のすべての拡張機能に必要な基本機能について、これらのクラスをテストできるようにしたいと考えています。これらのことをテストするために、それぞれのテスト クラスを作成することもできますが、基本的には Record クラスの拡張機能ごとにこれらのテストをコピー アンド ペーストすることになりますが、これは正しくないようです。

テスト クラスを作成し、配列内のこれらのオブジェクトでデータ プロバイダーを使用することを考えましたが、失敗したテストがあった場合、どのオブジェクトが失敗の原因になるかわかりませんでした。

なんらかの TestAllExtensionsOfRecordClass テスト クラスを作成し、オブジェクトを実行して、どのオブジェクトが失敗したかを特定できるようにする方法が必要です。

提案?

4

1 に答える 1

1

多くの単体テスト フレームワークは、テスト クラスの継承をサポートしています。抽象的なテスト スーパークラスを作成すると、派生したすべてのテスト クラスがその中のすべてのテストを継承して実行します。これにより、そのスーパークラスでコントラクト テストとも呼ばれる抽象的なテスト ケースを定義できます。これらは、具体的な実装に関係なく一定である必要がある「基本機能」のテストです。したがって、あなたの場合、すべての基本的なテスト ケースと派生した CustomerTest、JobTest などを含む抽象的な RecordTest があり、独自の実装に対してこれらのテストを実行します。

于 2013-04-26T07:49:09.617 に答える