Решить это было сложно, поэтому я опишу общую схему того, что я сделал. Возможно, что-то из этого было ненужным, но по крайней мере мои инструкции помогут вам понять все важные шаги:
- Создайте новое решение и создайте в нем новый проект модульного тестирования. (Если вы используете Reporting Services, как и я, создайте вместе с ним проект Reporting)
- Импортируйте запросы в ваш тестовый проект и установите для свойств значение «Копировать, если новее» или «Всегда копировать».
- Загрузите файл SQL в вашем тесте. Я написал функцию вида:
.
public static string LoadSqlFile(string name)
{
string path = Path.Combine( Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)
, @"sql\" + name
);
return File.ReadAllText(path);
}
, который загружает файл SQL по имени файла. Это ответ на мой конкретный вопрос.
- Написать тест (используя шаблон UnitTest, а не шаблон SqlServerUnitTest). Я написал некоторый код для генерации тестов из JSON, что облегчает эту задачу для пользователей, не использующих C #, в моей команде. В моем случае использования каждый тест имеет необъявленный параметр, который передается в тест. JSON также принимает список ожидаемых результатов, который мы сравниваем с результатом.