C# 如何在MS unity中注册rhino存根?
我使用MsC# 如何在MS unity中注册rhino存根?,c#,unit-testing,unity-container,rhino-mocks,C#,Unit Testing,Unity Container,Rhino Mocks,我使用Msunity容器和rhinomock创建存根 我尝试创建存根并将其注册到unity容器中 IUnityContainer container = ContainerManager.GetDefaultContainer; var loggerStub = MockRepository.GenerateStub<ILogger>(); container.RegisterType<ILogger, loggerStub>(); IUnityContainer
unity容器
和rhinomock
创建存根
我尝试创建存根并将其注册到unity容器中
IUnityContainer container = ContainerManager.GetDefaultContainer;
var loggerStub = MockRepository.GenerateStub<ILogger>();
container.RegisterType<ILogger, loggerStub>();
IUnityContainer container=ContainerManager.GetDefaultContainer;
var loggerStub=MockRepository.GenerateStub();
container.RegisterType();
但是,只能注册类类型
如何注册存根(如记录器存根)以进行单元测试?您还可以使用配置Unity容器将给定类型解析为指定实例 因此,在注册码中,您需要将最后一行更改为:
container.RegisterInstance(typeof(ILogger)、loggerStub);
然而,我发现在unis测试中需要使用IoC容器有点奇怪
您应该能够手动创建受测系统的实例
根据我的经验,我在以下情况下的测试中使用过IoC:
- 当我需要测试容器配置本身时(例如:查看是否可以成功解析特定类型)
- 当我有如此多的依赖项时,手动指定它们并不容易(在这种情况下,问题实际上是糟糕的设计或糟糕的测试隔离)
- 当我需要执行集成测试(不是单元测试)时
- 你得做比必要的更多的工作。在应用程序中,您设置了一个容器,它解决了所有问题。在测试的情况下,您需要使用不同的存根/模拟设置许多容器配置(取决于您在每个单元测试中测试的内容)。我认为手动向测试中的类提供任何依赖关系更容易
- 在某些测试中,您可能会忘记为所有依赖项设置存根,并且您的单元测试最终可能会访问外部资源(例如数据库、远程服务)
container.RegisterInstance(typeof(ILogger)、loggerStub);
然而,我发现在unis测试中需要使用IoC容器有点奇怪
您应该能够手动创建受测系统的实例
根据我的经验,我在以下情况下的测试中使用过IoC:
- 当我需要测试容器配置本身时(例如:查看是否可以成功解析特定类型)
- 当我有如此多的依赖项时,手动指定它们并不容易(在这种情况下,问题实际上是糟糕的设计或糟糕的测试隔离)
- 当我需要执行集成测试(不是单元测试)时
- 你得做比必要的更多的工作。在应用程序中,您设置了一个容器,它解决了所有问题。在测试的情况下,您需要使用不同的存根/模拟设置许多容器配置(取决于您在每个单元测试中测试的内容)。我认为手动向测试中的类提供任何依赖关系更容易
- 在某些测试中,您可能会忘记为所有依赖项设置存根,并且您的单元测试最终可能会访问外部资源(例如数据库、远程服务)