C#测试通用异常

问题描述

我正在为在B数据库上运行的存储库类编写集成测试。

我要测试以下事实:两次插入同一条记录会引发异常,我正在使用MySQL

xUnit

该测试工作正常,但我希望我的测试与可能的一样通用,如果稍后我的 [Fact] public void Insert_SamePaymentTwoTimes_ThrowInvalidOperationException() { Payment payment; using (var transaction = new TransactionScope()) { int? id = 0; id = paymentRepository.Insert(testPayment); payment = paymentRepository.GetById(id); Assert.Throws<MySql.Data.MySqlClient.MySqlException>(() => paymentRepository.Insert(payment)); } } 写道PaymentRepository时该测试将失败。

我想出了这个解决方案:

更改MSSQL函数,使其引发一般系统异常:

Insert()

并在我的测试中捕获该异常:

using (var conn = GetOpenConnection())
{
   try
   {
       paymentId = conn.Insert(paymentData);
   }
   catch (MySqlException ex)
   {
       throw new InvalidOperationException(ex.Message);
   }
}

此方法是否有其他选择?我在考虑也许要实现自定义 [Fact] public void Insert_SamePaymentTwoTimes_ThrowInvalidOperationException() { Payment payment; using (var transaction = new TransactionScope()) { int? id = 0; id = paymentRepository.Insert(testPayment); payment = paymentRepository.GetById(id); Assert.Throws<InvalidOperationException>(() => paymentRepository.Insert(payment)); } } 以便尽可能通用。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)