ASP.NET Core 2.1: как скопировать (или найти) файл при запуске интеграционных тестов? - PullRequest
0 голосов
/ 05 марта 2019

У нас есть вручную обновленный файл json в нашем проекте, он находится в %solutionDir%/SomeProject/SomeProject/Foo.json

Мы пишем интеграционный тест, чтобы выполнить некоторую проверку этого статического файла json (чтобы мы могли определить, имеет ли онобновлен вручную, неправильно, или если он должен был быть обновлен, но не обновился).

Наш проект интеграционного тестирования находится под %solutionDir%/SomeProject/SomeProject.IntegrationTests/

Мы ссылаемся на файл Foo.json через

  <ItemGroup>
    <None Include="..\SomeProject\Foo.json" Link="Foo.json" />
  </ItemGroup> 

При создании тестового проекта мы видим, что файл выводится в нашу папку /bin.

Когда мы пытаемся сослаться на файл в нашем методе тестирования через Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), мыневозможно найти файл, так как тест интеграции выполняется в другой папке (.../AppData/.../Temp/...), в которой находится только файл dll.

Как я могу сослаться на файл json, который мы копируем, на вывод?

1 Ответ

0 голосов
/ 05 марта 2019

Я обнаружил, что при локальном запуске var location = System.AppContext.BaseDirectory даст правильную папку, а затем Path.Combine(location, "Swagger.json"); даст нам файл.

Не уверен, что это рекомендуемый подход, но пока он работает,

...