【发布时间】:2009-06-17 07:33:55
【问题描述】:
在为持久存储的数据编写测试时,我想出了如下测试:
[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”的持久数据,并且所有未来的保存都失败。
我能想到的唯一解决方法是在保存之前进行预防性删除,但这似乎是一种大规模的黑客攻击。
【问题讨论】:
标签: c# database unit-testing