编写单元测试用于持久数据创建和删除

时间:2009-06-17 07:33:56

标签: c# database unit-testing

在为持久存储的数据编写测试时,我想出了一个测试:

[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()方法执行保存但返回false / failure时。断言触发并且不调用删除,因此它不会自行清理。

在此之后,数据库中存在名为“id”的持久数据,并且所有将来的保存都会失败。

我能想到解决问题的唯一方法是在保存之前进行预防性删除,但这似乎可以解决大问题。

2 个答案:

答案 0 :(得分:5)

将删除放在标有TestCleanup属性的方法中(我假设您使用的是MSTest)。

顺便说一句,你的测试也测试了两个不同的东西:保存是否有效,还是测试删除。测试一次只能测试一件事。

答案 1 :(得分:0)

在一次交易中包裹?在catch中删除吗?