MS Test ошибка при запуске всех тестов - PullRequest
3 голосов
/ 15 января 2010

В настоящее время я работаю над проектом, который использует MS Test для модульного тестирования.Когда я выполняю «Выполнить все тесты», я получаю следующую ошибку для примерно 1/3 тестов:

Метод теста [Метод тестирования] вызвал исключение System.IO.FileLoadException, но ожидалось исключение System.InvalidOperationException,Сообщение об исключении: System.IO.FileLoadException: при загрузке этой сборки будет получен набор грантов, отличный от других экземпляров.(Исключение из HRESULT: 0x80131401)

Если я пойду на какой-либо из неудачных тестов и сам запущу тест, он выдаст ту же ошибку.Если я поставлю точку останова в тесте и отладлю тест, он пройдет без ошибок.Если я снова проведу индивидуальный тест, он пройдет.Если я вернусь к выполнению всех тестов, я снова получу вышеуказанную ошибку для 1/3 тестов.

У меня была эта проблема раньше, и я ничего не делал, чтобы исправить ее, и она просто волшебным образом исчезла.Но теперь он вернулся и очень расстраивает.

Что вызывает эту ошибку?Есть ли исправление этой ошибки?

1 Ответ

1 голос
/ 15 января 2010

Похоже, у вас есть Взаимодействующие тесты - xUnit Test Patterns запах.

Короче говоря, некоторые тесты зависят от выполнения предыдущих тестов, поэтому, когда вы запускаете их изолированно, они меняют поведение, потому что их неявные предположения об их среде оказываются неверными.

Это также может объяснить, почему у вас была проблема раньше, и затем она ушла. Хотя MSTest выглядит достаточно стабильным в том, как он заказывает тесты, он может решить запустить их в другом порядке в следующий раз.

Я не могу сказать вам, как решить проблему, поскольку она индивидуальна. Однако ищите Shared Fixtures . Примеры включают

  • Базы данных
  • Файлы
  • Статические (совместно используемые в Visual Basic) типы

В вашем случае FileLoadException предполагает, что ваши тесты ожидают, что некоторые файлы будут рядом. Когда вы запускаете весь набор тестов, эти файлы были оставлены предыдущими тестовыми примерами, но они заметно отсутствуют, когда тест выполняется изолированно.

...