当使用Assembly.GetEntryAssembly()
的类在单元测试中运行时,Assembly.GetEntryAssembly()
是null
。
有什么选择可以在单元测试期间定义Assembly.GetEntryAssembly()
?
最佳答案
您可以使用Rhino Mocks做这样的事情:使用IAssemblyLoader接口将Assembly.GetEntryAssembly()调用封装到一个类中,然后将其注入正在测试的类中。这未经测试,但遵循以下原则:
[Test] public void TestSomething() {
// arrange
var stubbedAssemblyLoader = MockRepository.GenerateStub<IAssemblyLoader>();
stubbedAssemblyLoader.Stub(x => x.GetEntryAssembly()).Return(Assembly.LoadFrom("assemblyFile"));
// act
var myClassUnderTest = new MyClassUnderTest(stubbedAssemblyLoader);
var result = myClassUnderTest.MethodToTest();
// assert
Assert.AreEqual("expected result", result);
}
public interface IAssemblyLoader {
Assembly GetEntryAssembly();
}
public class AssemblyLoader : IAssemblyLoader {
public Assembly GetEntryAssembly() {
return Assembly.GetEntryAssembly();
}
}
关于.net - .NET NUnit测试-Assembly.GetEntryAssembly()为null,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9300632/