Наклонив голову к стене, пытаясь создать действительно простой тестовый сценарий. Я уверен, что мне не хватает чего-то очень простого!
Что бы я ни делал, я, похоже, получил следующую ошибку от NUnit gui при тестировании моей DLL: System.TypeLoadException: введите 'Castle.Proxies.ITestProxy' из сборки 'DynamicProxyGenAssembly2, Version = 0.0.0.0, Culture = neutral, PublicKeyToken = null' пытается реализовать недоступный интерфейс.
Теперь я видел ссылку на эту ошибку в кучах мест, когда смотрю в Qaru и в другом месте, но решение, которое я продолжаю находить, похоже, не помогает. И я даже не использую внутренний интерфейс на этом этапе! Решение, которое я вижу по всему месту, также помещает следующую строку в AssemblyInfo.cs
[сборка: InternalsVisibleTo ( "DynamicProxyGenAssembly2" )]
Я использую:
- Visual Studio 2010 Professional
- С# 4.0
- Moq 4.10810.8 Бета (развернутый бит)
- 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);
}
}
}
---- UPDATE --- После изменения версии Moq с 4.10810.8 до 4.0.10501.6 все работает отлично!