Биться головой о стену, пытаясь заставить работать действительно простой сценарий тестирования. Я уверен, что мне не хватает чего-то очень простого!
Что бы я ни делал, я, кажется, получаю следующую ошибку из графического интерфейса NUnit при запуске теста с моей DLL: System.TypeLoadException: введите Castle.Proxies.ITestProxy из сборки DynamicProxyGenAssembly2, Version = 0.0.0.0, Culture = нейтральный, PublicKeyToken = null 'пытается реализовать недоступный интерфейс.
Я видел упоминание об этой ошибке в кучах мест при просмотре Stack Overflow и других местах, но решение, которое я все время нахожу, похоже, не помогает. И я на данном этапе даже не использую внутренний интерфейс! Решение, которое я вижу вокруг, тоже помещает следующую строку в AssemblyInfo.cs
[сборка: InternalsVisibleTo ("DynamicProxyGenAssembly2")]
Я использую:
- Visual Studio 2010 Профессиональный
- c# 4.0
- Moq 4.10810.8 Beta (bin развернут)
- NUnit 2.5.5 (установлен в GAC)
Все, что мне нужно сделать, чтобы воссоздать эту ошибку:
- Создать новый проект библиотеки классов
- Ссылка Moq и Unit (как указано выше)
- Создайте интерфейс. Я назвал свой интерфейс ITest, сделал его общедоступным, и у него есть один метод - string TestMethod ();. Для простоты делаю это в локальном проекте.
- Создайте класс под названием «Testing», украшенный [TextFixture], и тестовый метод под названием «TestMethod», украшенный [Test]
- Соберите проект, затем запустите NUnit для полученной библиотеки DLL в папке Debug.
Вот содержимое моего тестового класса
namespace MoqTest {
[TestFixture]
public class Testing {
[Test]
public void TestMethod() {
var testMock = new Mock<ITest>();
testMock.Setup(x => x.TestMethod()).Returns("String val");
var xyz = testMock.Object;
Assert.AreEqual(1, 1);
}
}
}
---- ОБНОВЛЕНИЕ --- После смены версии Moq с 4.10810.8 на 4.0.10501.6 все работает нормально!