Старая почта, но вот шаг за шагом, которая работала для SQL Server 2014 под управлением Windows 7:
Voilá!
Я думаю, что установка учетной записи входа в систему могла быть опцией в установке, но если это было не по умолчанию, и было легко пропустить, если вы еще не знали об этой проблеме.
Мой подход к этому в значительной степени основан на книге Growing Object-Oriented Software Guided by Tests (GOOS), которую я только что прочитал, но это лучшее, что я знаю на сегодняшний день. А именно:
Обновление для комментатора:
Если вы читаете структурированные данные (например, объекты Book) (если нет, замените string на IEnumerable)
interface BookRepository
{
IEnumerable<Books> LoadFrom(string filePath);
void SaveTo(string filePath, IEnumerable<Books> books);
}
Теперь вы можете использовать инъекцию конструктора для внедрения макета в класс клиента. Таким образом, модульные тесты клиентского класса работают быстро и не бьют по файловой системе. Они просто проверяют, что правильные методы вызываются на зависимостях (например, Load/Save)
var testSubject = new Client(new Mock<BookRepository>.Object);
Далее вам нужно создать реальную реализацию BookRepository, работающую с файлом (или Sql DB, если хотите). Никто другой не должен знать об этом. Напишите интеграционные тесты для FileBasedBookRepository (который реализует вышеуказанную роль) и проверьте, что вызов Load со ссылкой на файл дает нужные объекты, а вызов Save с известным списком сохраняет их на диск. Т.е. использует реальные файлы Эти тесты будут медленными, поэтому пометьте их тегом или перенесите в отдельный набор.
[TestFixture]
[Category("Integration - Slow")]
public class FileBasedBookRepository
{
[Test]
public void CanLoadBooksFromFileOnDisk() {...}
[Test]
public void CanWriteBooksToFileOnDisk() {...}
}
Наконец, должен быть один/несколько приемочных тестов, которые проверяют Load и Save.
Вы можете вместо передачи имени файла в функцию сохранения передать Stream, TextWriter или аналогичный. Затем при тестировании вы можете передать основанную на памяти реализацию и убедиться, что записаны правильные байты, фактически ничего не записывая на диск.
Чтобы проверить проблемы и исключения, вы можете взглянуть на макет. Это может помочь вам искусственно сгенерировать конкретное исключение в определенный момент в процессе сохранения и проверить, что ваш код обрабатывает его соответствующим образом.