如何使用内部异常对代码进行单元测试

本文关键字:单元测试 代码 何使用 内部 异常 | 更新日期: 2023-09-27 17:52:13

我想在以下代码上获得一些单元测试覆盖率:

public static class ExceptionExtensions {
   public static IEnumerable<Exception> SelfAndAllInnerExceptions(
      this Exception e) {
      yield return e;
      while (e.InnerException != null) {
         e = e.InnerException; //5
         yield return e; //6
      }
   }
}
编辑:看来我不需要鼹鼠来测试这个代码。此外,我有一个错误,第5行和第6行颠倒。

如何使用内部异常对代码进行单元测试

这是我得到的(毕竟不需要痣):

[TestFixture]
public class GivenException
{
   Exception _innerException, _outerException;
   [SetUp]
   public void Setup()
   {
      _innerException = new Exception("inner");
      _outerException = new Exception("outer", _innerException);
   }
   [Test]
   public void WhenNoInnerExceptions()
   {
      Assert.That(_innerException.SelfAndAllInnerExceptions().Count(), Is.EqualTo(1));
   }
   [Test]
   public void WhenOneInnerException()
   {
      Assert.That(_outerException.SelfAndAllInnerExceptions().Count(), Is.EqualTo(2));
   }
   [Test]
   public void WhenOneInnerException_CheckComposition()
   {
      var exceptions = _outerException.SelfAndAllInnerExceptions().ToList();
      Assert.That(exceptions[0].InnerException.Message, Is.EqualTo(exceptions[1].Message));
   }
}