我使用具有单元和集成测试的分布式系统。我试图通过在集成和单元测试之间重用代码来节省时间和维护工作。为此,我实现了一个接口和 2 个类:fake 和 real。假类返回一些存根数据,而真实类对其他分布式服务进行一些调用。
我的项目的当前结构
/BaseTest 接口 IFoo ------------------------------------- /单元测试 FakeFoo 类:IFoo [测试夹具] class FooTest {...} //使用 FakeFoo ------------------------------------- /集成测试 类 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# 编写的,但我相信这个问题与语言无关。
有人有更好的想法吗?我做错了吗?