У меня есть несколько тестов, которые полагаются на некоторые файлы, отмеченные как "Контент", и "Всегда копировать". Я использую атрибут DeploymentItem, чтобы убедиться, что они копируются в выходной каталог при запуске mstest вне VS. Однако при использовании тестового бегуна Resharper внутри VS эти файлы никогда не попадают в каталог, из которого он выполняется. Кто-нибудь знает, как это исправить?
Resharper Unit Test Runner не может найти файлы содержимого
Ответ 1
Отключение опции Unit Testing > Shadow-copy assemblies being tested
Resharper устраняет эту проблему для меня.
Ответ 2
Мы решили эту проблему, отметив тестовые файлы как встроенные ресурсы, а затем использовали служебный метод для чтения встроенного ресурса и записать его в ожидаемое местоположение.
Ответ 3
Я также боролся с тестами на основе NUnit, где у меня есть файлы в тестовом проекте, которые я хочу прочитать как часть теста.
Запуск через NCrunch работает нормально, но с помощью Resharper он не может найти файл, находящийся в другом месте (например, C:\Users\myuser\AppData\Local\JetBrains\Installations\ReSharperPlatformVs15_f6172a1d_000).
Вырвав волосы, я наконец нашла решение. Вместо того, чтобы использовать
Environment.CurrentDirectory
или же
System.Reflection.Assembly.GetEntryAssembly().Location
В NUnit есть встроенное свойство:
TestContext.CurrentContext.TestDirectory
Теперь все совместимо с NCrunch, ReSharper и встроенным в Visual Studio Test Explorer! (Напоминание: вам все равно нужно установить "Build Action" = "Содержимое" и "Копировать в выходной каталог" = "Копировать всегда")
Надеемся, что есть эквивалент в других тестовых библиотеках.