我从单元测试开始,我想为已经有实现的一些类编写测试。
我们正在开发这个项目中的接口,我想它在编写单元测试时会有所帮助。 但是接口实现被标记为内部,我迄今为止测试实现的最佳解决方案是:
#if DEBUG
public class CreateRequestService : DomainServiceBase, ICreateRequestService
#else
internal class CreateRequestService : DomainServiceBase, ICreateRequestService
#endif
{
你怎么看?我试图弄清楚如何在单元测试中使用autofac,但它给我带来了很多味道。这是一个好习惯吗?
我忘了指定我正在使用的工具。我正在使用C#4.5,NUnit和Moq!
答案 0 :(得分:4)
几年前我常常隐藏类和接口。停止这样做,只有在我开发库时才会使用它。
如果您使用.NET,则可以制作“朋友组件”。这样单元测试组件可以看到生产组件的内部成员。但为此您需要访问生产程序集中的代码(您需要添加程序集属性)。
[assembly: InternalsVisibleTo("AssemblyB")]
http://msdn.microsoft.com/en-us/library/0tke9fxk.aspx
另一个选择是简单地将类和接口公开并将它们移动到
MyProduct.xxx.yyy.Internal
命名空间。这样你就可以测试,团队的每个成员都知道不应该使用这些成员。