В двух словах, у меня есть решение, которое прекрасно работает в IDE, и все модульные тесты работают нормально с графическим интерфейсом NUnit (через плагин NUnitit VS2008). Однако, когда я выполняю свой сборщик TeamCity, все модульные тесты, которые требуют доступа к файлу (например, для запуска тестов для определенных файлов XML), я просто получаю System.IO.DirectoryNotFoundExceptions.
Причина этого ясна: он ищет тех, кто поддерживает файлы XML, загруженные различными модульными тестами в неправильную папку.
Структура моих модульных тестов выглядит следующим образом:
+-- project folder
+-- unit tests folder
+-- test.xml
+-- test.cs
+-- project file.xaml
+-- project file.xaml.cs
Все мои проекты имеют свою собственную папку UnitTests, которая содержит файл .cs и все файлы XML, схемы XML и т. Д., Необходимые для запуска тестов.
Поэтому, когда я пишу свой test.cs, он ищет «test.xml» в коде, потому что они находятся в одной папке (на самом деле я делаю что-то вроде .... \ unit tests \ test.xml но это глупо). Как я уже говорил, тесты отлично работают в NUnit. Но это потому, что юнит-тесты являются частью проекта. При запуске модульных тестов из TeamCity я выполняю их для сборок, которые копируются в выходную папку основного приложения. Эти XML-файлы модульного теста следует , а не , копировать в произвольном порядке в выходную папку, чтобы тесты прошли успешно.
Может кто-нибудь предложить лучший способ организации моих модульных тестов в каждом проекте (которые являются зависимостями для основного приложения), чтобы я мог выполнять модульные тесты из NUnit и из сборщика TeamCity? Единственный другой вариант, который я могу придумать, - это просто поместить данные тестирования XML в код, а не загружать их из файла. Я бы предпочел не делать этого.