.NET NUnit test - Assembly.GetEntryAssembly () является нулевым - PullRequest
33 голосов
/ 02 декабря 2010

Когда класс, используемый Assembly.GetEntryAssembly (), запускается в модульном тесте, Assembly.GetEntryAssembly () имеет значение null. Есть ли какая-либо опция, как определить Assembly.GetEntryAssembly () во время модульного тестирования?

Ответы [ 2 ]

49 голосов
/ 19 февраля 2014

Реализуйте метод SetEntryAssembly (сборка сборки), указанный в

http://frostwave.googlecode.com/svn-history/r75/trunk/F2DUnitTests/Code/AssemblyUtilities.cs

, для вашего проекта модульного тестирования.

10 голосов
/ 02 декабря 2010

Вы можете сделать что-то подобное с Rhino Mocks: инкапсулировать вызов Assembly.GetEntryAssembly () в класс с интерфейсом IAssemblyLoader и вставить его в класс, который вы тестируете.Это не проверено, но что-то вроде этого:

[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();
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...