当使用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/

10-12 01:59