2010-02-12 50 views
1

我开始使用TDD,并且想知道添加服务引用来测试我的项目是否是一种不好的做法,或者我只是在依赖于WCF服务的测试中嘲笑假服务。WCF + TDD:为您的测试项目添加服务引用:错误?

+0

有没有任何文件详细说明这一点? – 2010-02-12 18:50:51

+0

我不明白。你想TDD你的服务?那么这不是TDD,你应该创建TDD方法来创建你的实际服务实现(服务类!) – PositiveGuy 2013-10-25 05:25:36

+0

,并且你应该总是嘲笑一个Web服务,而不是使用代理引用。 – PositiveGuy 2013-10-25 05:26:00

回答

2

是的,将服务引用添加到单元测试项目是一种不好的做法。您可以使用生成的服务合约接口来模拟测试中真正的WCF服务行为。

+1

另外,如果您正在测试WCF管道,则可以使用测试框架线程作为主机(MSTEST或其他)。这假定你没有使用像IIS这样的东西作为主机。 – 2010-02-12 22:10:42

0

与使用服务引用不同,您可以使用服务契约来嘲笑ChannelFactory。

+0

这是什么东西在TDD附近? TDD意味着您先为不存在的服务创建测试,然后在编写失败的测试时实施服务。 – PositiveGuy 2013-10-25 05:27:02

+0

我认为我的句子中的关键词是模拟的。你将得到你的服务实现的契约,然后你会使用一个模拟框架(MOQ等)来给你的测试提供一些东西来运行。就像这里提到的http://fczaja.blogspot.co.uk/2012/10/mocking-wcf-client-with-moq.html。 – Rus 2013-10-25 09:08:56

1

有一个服务ref可能是一个糟糕的路要走,你可以考虑实现网关模式,例如, IMyFooServiceGateway作为额外的抽象层。通过这种方式,您可以使应用程序更加松散地耦合并获得一些额外的可测试性(在您测试项目中,您会参考包含IMyFooServiceGateway的分离程序集,并手动创建一个实现IMyFooServiceGateway的模拟程序或使用模拟框架,如Rhino Mocks创建一个给你。

0

如果这是目标,测试的项目有一个服务引用,你不应该有额外的服务引用添加到测试项目。

当添加一个服务引用对于一个项目,通常为其生成的代码包含一个可公开访问的服务接口,因此测试项目只需要引用目标项目就可以看到这个接口,然后这个接口可以放到你的嘲弄中选择图书馆或手动嘲笑。

值得注意的是,生成的接口并不一定遵循接口的典型“IFoo”命名约定,因此它不是很明显。

相关问题