Как и большинство веб-приложений, у меня есть статические ресурсы, которые должны быть частью развертывания, иначе пользователь получит ответ 404 от сервера. Я думал использовать модульное тестирование для проверки двух вещей: 1. ресурс существует, и 2. контент не был изменен. Я попробовал следующий код, но он ожидает (я думаю), что файлы существуют в проекте модульного теста.
Структура решения:
WebApplicationProject
- ...
- публичный
- файл.*
- другой файл. *
- web.config
WebApplicationProject.Tests
- AssetTests.cs
Я все делаю неправильно, разве это не должно быть частью модульного теста и какой-то другой походки в процессе сборки CI (DevOps Azure), или я упускаю что-то супер очевидное? Я, вероятно, задаю неправильные вопросы и поступаю неправильно, потому что знаю, что я не первый, кто хочет сделать что-то подобное.
Я читал другие посты о тестировании с файлами, но все они используют тестовые файлы для передачи данных для ввода в некоторый метод, который использует файл, или некоторый процесс, который генерирует файл для сравнения. Я не хочу делать ни одну из этих вещей.
Я также поиграл с настройками, делающими файл встроенным ресурсом, и всегда развертывал его вместе с проектом, но проект модульного тестирования по-прежнему не может получить доступ к файлу так, как я это делаю.
[TestClass]
public class AssetTests
{
[TestMethod]
[DeploymentItem(@".\files\file.*")]
public void AwardLetters()
{
string path = Path.Combine(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location), "file.*");// gets the working path for the testing dll, no files exist here.
Assert.IsTrue(File.Exists("file.*"), "FAIL: file {0} not found", "file.*");// nothing I have tried has access to the projects static resources
}
}
Все результаты заканчиваются файлом, но пока не найдено исключение.
Я попытался загрузить ссылку вручную, используя:
Assembly a = Assembly.LoadFrom ("WebApplicationProject"); // также используется WebApplicationProject.dll
Это не может найти ссылку. Да, для локального экземпляра ссылочного свойства задано значение true.
Я открыт для всех предложений, но если вы предлагаете, чтобы у меня было две копии файлов, пожалуйста, полностью объясните, почему это желательно.