Я недавно начал использовать NUnit, а теперь Rhino Mocks.Теперь я готов начать использовать его в проекте на C #.
Проект включает библиотеку базы данных, которую я должен написать.
Я прочитал, что тест должен быть независимым и не полагаться друг на другани порядок выполнения теста.
Итак, предположим, я хотел проверить FTP или соединение с базой данных.Я бы написал что-то вроде
[Test]
public void OpenDatabaseConnection_ValidConnection_ReturnsTrue()
{
SomeDataBase db = new SomeDataBaseLibrary(...);
bool connectionOk = db.Open();
Assert.IsTrue(connectionOk);
}
Другой тест может включать тестирование некоторых функций базы данных, например вставку строки.
[Test]
public void InsertData_ValidData_NoExceptions()
{
SomeDataBase db = new SomeDataBaseLibrary(...);
db.Open();
db.InsertSomeRow("valid data", ...);
}
Я вижу несколько проблем с этим:
1) Проблема в том, что последний тест, чтобы быть независимым от первого теста, должен будет снова открыть соединение с базой данных.(Это также потребует, чтобы первый тест снова закрыл соединение, прежде чем оно будет открыто.)
2) Другое дело, что, если SomeDataBaseLibrary изменится, то все методы тестирования также должны будут измениться.
3) Скорость теста снижается, когда все эти соединения должны устанавливаться при каждом запуске теста.
Как обычно это делается?
Iпонимаю, что я могу использовать макеты DataBaseLibrary, но это не проверяет саму библиотеку, что является моей первой целью в проекте.