Я использую Visual Studio 2015 Enterprise RTM для написания модульных тестов для проекта, который использует Unity Container.Visual Studio 2015 InvalidProgramException в модульном тестировании с подделками
Я обнаружил, что простой акт добавления сборки подделок для единства, даже не на самом деле с помощью подделку, достаточно, чтобы произвести это исключение:
System.InvalidProgramException: Common Language Runtime обнаружена неверная программа.
Рассмотрим следующие шаги для воспроизведения:
Использование Visual Studio 2015 Enterprise RTM создать Unit Test проект таргетирования .NET 4.6
Добавьте пакет NuGet "Единство" версия 3.5.1404.0
Добавить пакет NuGet «CommonServiceLocator» версия 1.2.0
Написать тест один блок следующим образом:
[TestClass]
public class UnitTest1 : IDisposable
{
[TestMethod]
public void TestMethod1()
{
new ResolvedArrayParameter<IDisposable>(new IDisposable[] {this});
}
void IDisposable.Dispose()
{
}
}
Проверьте тест пройден
правой кнопкой мыши на Microsoft.Practices.Unity ссылки и выберите " Add Fakes Assembly "
Заново запустить тест
Observe следующего замечательный провал теста:
Тест Имя: TestMethod1
Тест FullName: UnitTestProject11.UnitTest1.TestMethod1
Test Источник: C: \ TEMP \ UnitTestProject11 \ UnitTestProject11 \ UnitTest1.cs: линия 12
Тест Результат: Failed
Test Продолжительность: 0: 00: 00,0572447Результат StackTrace:
в Microsoft.Practices.Unity.ResolvedArrayParameter..ctor (тип arrayParameterType, тип ElementType, Object [elementValues])
в Microsoft.Practices.Unity.ResolvedArrayParameter`1..ctor (Object [ ] elementValues)
в UnitTestProject11.UnitTest1.TestMethod1() в C: \ Temp \ UnitTestProject11 \ UnitTestProject11 \ UnitTest1.cs: строка 13
Результат Сообщение:
метод Test UnitTestProject11.UnitTest1.TestMethod1 бросил исключение:
системы. InvalidProgramException: Common Language Runtime обнаружил недопустимую программу.
Самым необычным признаком этой проблемы, очевидно, подделками даже не нужно появляться непосредственно в коде для отказа проявить.
Огромное количество пустяков показывает, что перенацеливание тестового проекта на .NET 4.5 «исправляет» проблему, которая для меня является не стартером из-за ошибки another. Я опубликовал несколько недель назад.
Еще более возиться с практически всеми настройками подделок (кодовые контракты и т. Д.) Не давало решения.
Любой совет по этому вопросу будет очень признателен.
Начал щедрость, потому что мы сталкиваемся с тем же 'InvalidProgramException', когда мы используем' ShimLocalPrintServer.Constructor ...' для проверки метода, который создает экземпляр 'System.Printing.LocalPrintServer'. «UnityContainer» не требуется для воспроизведения этой ошибки. И сброс фреймворка не помог. Исключение возникает, когда тестируемый метод вызывает 'new LocalPrintServer (новая строка [0], PrintSystemDesiredAccess.EnumerateServer);' –
Вы видели этот похожий вопрос? Http: // StackOverflow.com/questions/14578355/system-invalidprogramexception-when-executing-unit-tests-in-mstest-after-microso – BlakeH
Почему вы еще не установили Visual Studio Update 1? – CSharpie