我正在为我的数据库编写集成测试,但我有一个问题。在测试方法的开头,我向数据库添加了一些对象,在方法的结尾,我应将其删除。

所以我有一个类似的代码:

var group = new ContactGroup { Name = UserLogin + "_test_group" };
group.ID = _provider.AddGroup(UserLogin, group);
Assert.That(_provider.GetGroup(UserLogin, group.ID), Is.Not.Null);
_provider.RemoveGroup(UserLogin, group.ID);


关键是,如果断言失败,则将不会执行RemoveGroup。我该怎么办?

如果我尝试这样做:

var group = new ContactGroup { Name = UserLogin + "_test_group" };
group.ID = _provider.AddGroup(UserLogin, group);
try
{
    Assert.That(_provider.GetGroup(UserLogin, group.ID), Is.Not.Null);
}
finally
{
    _provider.RemoveGroup(UserLogin, group.ID);
}


我应该像这样抛出AssertionException吗

catch (AssertionException)
{
    throw;
}


最佳答案

在数据库集成测试中处理清除的一种方法是在事务中执行测试,然后在测试完成后将其回滚。

关于c# - 在NUnit中捕获断言失败的正确方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3353195/

10-14 10:57