私は、ユニットテストと統合テストを備えた分散システムを使用しています。統合テストと単体テストの間でコードを再利用することで、時間とメンテナンスの労力を節約しようとしています。このために、私はインターフェースと2つのクラスを実装しました:偽物と本物。偽のクラスはスタブ化されたデータを返し、実際のクラスは他の分散サービスを数回呼び出します。
私のプロジェクトの現在の構造
/ BaseTest インターフェイスIFoo ------------------------------------- /単体テスト クラスFakeFoo:IFoo [テストフィクスチャ] class FooTest {...}//FakeFooを使用します ------------------------------------- / IntegrationTest クラスRealFoo:IFoo [テストフィクスチャ] class FooTest {...}//RealFooを使用します
どういうわけか両方のテストでコードを再利用したいので、テストがある場合
[Test]
public void GetBarIsNotNullTest()
{
var foo = IoC.Current.Resolve<IFoo>();
Bar actual = foo.GetBar();
Assert.IsNotNull(actual);
}
このテストを両方の実装で実行したい:RealFoo
とFakeFoo
。これまで、 /UnitTestプロジェクトと/IntegrationTestプロジェクトの間でテストをコピーして貼り付けることを考えていましたが、これは正しく聞こえません。
システムはC#で記述されていますが、この質問は言語に依存しないと思います。
誰かがより良いアイデアを持っていますか?私はこれを間違っていますか?