Бьюсь головой о стену, пытаясь заставить действительно простой сценарий тестирования работать.
Я уверен, что упускаю что-то действительно простое!
Что бы я ни делал, мне кажется, что я получаю следующую ошибку из графического интерфейса NUnit при запуске теста с моей DLL:
System.TypeLoadException: Тип 'Castle.Proxies.ITestProxy' из сборки 'DynamicProxyGenAssembly2, версия = 0.0.0.0, Culture = нейтральный, PublicKeyToken = null' пытается реализовать недоступный интерфейс.
Теперь я видел ссылку на эту ошибку в кучах мест при поиске в Stack Overflow и в других местах, но решение, которое я продолжаю находить, похоже, не помогает. И я даже не использую внутренний интерфейс на этом этапе! Решение, которое я вижу в этом месте, тоже помещено в AssemblyInfo.cs
в следующей строке
[сборка: InternalsVisibleTo ("DynamicProxyGenAssembly2")]
Я использую:
- Visual Studio 2010 Professional
- с # 4,0
- Moq 4.10810.8 Beta (бен развернут)
- NUnit 2.5.5 (установлен в GAC)
Чтобы воссоздать эту ошибку, все, что мне нужно сделать, это:
- Создать новый проект библиотеки классов
- Ссылка Moq и Единица (как указано выше)
- Создать интерфейс. Я назвал свой интерфейс ITest, сделал его общедоступным, и у него есть один метод - string TestMethod (); Я делаю это в местном проекте для простоты.
- Создайте класс с именем «Тестирование», украшенный [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 все работает отлично!