在NUnit中捕获断言失败的正确方法 - c#

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

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

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;
}

参考方案

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

45码

SQL:GROUP BY记录,然后从每个组获取最后一条记录? - php

This question already has answers here: Closed 7 years ago. Possible Duplicate: SQL Server: Only last entry in GROUP BY我有一张这样的桌子:id| name | attendence 1 | Naveed| 1 2 | Naveed| 1 3…

NUnit-用于测试事务的单元测试用例 - c#

我有如下方法。我想为以下方法编写两个测试用例。1)提交数据成功完成交易2)带有回滚数据的失败事务如何编写涉及事务并成功与失败的测试用例?public async Task<List<string>> UpdateRequest(MetaData data, List<string> Ids, string requeste…

LeetCode题解49.group-anagrams

题目地址 https://leetcode.com/problems/group-anagrams/description/ 题目描述 Given an array of strings, group anagrams together. Example: Input: ["eat", "tea", "tan", "ate", "nat", "bat"], …

LeetCode题解计算机为什么是基于二进制的?

可以是三进制么?二进制有什么好处?题解:为什么叫电子计算机?算盘应该没有二进制

LeetCode题解统计城市的所有灯泡

这个是我刚毕业的时候,一个真实的面试题,这是一个开放题。题目描述:想办法,将一个城市的所有灯泡数量统计出来。题解:费米估算法1、如果某个城市常驻人口有1000万2、假设每5人居住在一套房里,每套房有灯泡5只,那么住宅灯泡共有1000万只3、假设公众场所每10人共享一只灯泡,那么共有100万只4、主要的这两者相加就得出了1100万只当然实际上这是估算的,具体应…