【发布时间】:2012-07-23 22:36:33
【问题描述】:
我使用具有单元和集成测试的分布式系统。我试图通过在集成和单元测试之间重用代码来节省时间和维护工作。为此,我实现了一个接口和 2 个类:fake 和 real。 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# 编写的,但我相信这个问题与语言无关。
谁有更好的主意?我做错了吗?
【问题讨论】:
-
为什么不将测试内容移动到共享库中,然后从单独的测试中调用它?
-
我认为你是对的——请参阅下面的我的 cmets 来了解你的答案;我的问题是如何让它与常规的 MS 测试框架 (vs2012) 一起使用?
标签: c# unit-testing language-agnostic tdd integration-testing