我的一些单元测试出现了代码分析警告:
WidgetManagerTests.cs (40): CA2000 : Microsoft.Reliability : 在方法 'WidgetManagerTests.TestInitialize()' 中, 在所有对它的引用超出作用域之前, 调用 System.IDisposable.Dispose 方法释放对象 'new ContainerControlledLifetimeManager()'。
我正在使用 Unity 和 Moq,以下是有问题的代码行:
var loggingServiceMock = new Mock<ILoggingService>();
this.unityContainer.RegisterInstance<ILoggingService>(loggingServiceMock.Object, new ContainerControlledLifetimeManager());
new
关键字创建可释放对象时,CA2000 规则才会触发。因此,使用任何方法来创建它(例如容器的Resolve
方法)都将防止 CA2000 触发违规行为。 - Nicole Calinoiu