Написание модульного теста для постоянного создания и удаления данных - PullRequest
3 голосов
/ 17 июня 2009

Когда я пишу тест для постоянно хранимых данных, я придумываю тест в соответствии с:

[TestMethod]
public void DoCreateDeleteTest() {
    PersistentDataStore pds = new PersistentDataStore();
    bool createSuccess = pds.Save("id", "payload");
    Assert.AreEqual(true, createSuccess);
    bool deleteSuccess = pds.Delete("id");
    Assert.AreEqual(true, deleteSuccess);
}

Пока все работает, это выглядит нормально. Функция не имеет предыдущих зависимостей и очищается после себя. Проблема заключается в следующем: когда метод .Save () выполняет сохранение, но возвращает ложь / сбой. Утверждение срабатывает, и удаление не вызывается, поэтому оно не очищается после себя.

После этого в базе данных сохраняются данные с именем «id» и сбой всех будущих сохранений.

Единственный способ, которым я могу обойти это, - это сделать предупредительное удаление перед сохранением, но это похоже на способ взлома.

Ответы [ 2 ]

5 голосов
/ 17 июня 2009

Поместите удаление в метод, помеченный атрибутом TestCleanup (я полагаю, вы используете MSTest).

Кстати, ваш тест также проверяет две разные вещи: работает ли сохранение и также проверяет удаление. Тесты должны проверять только одну вещь за один раз.

0 голосов
/ 17 июня 2009

Обернуть оба в одну транзакцию? Удалять в улове?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...