【问题标题】:How to unit test code with inner exceptions?如何对带有内部异常的代码进行单元测试?
【发布时间】:2011-08-11 11:37:54
【问题描述】:

我想对以下代码进行一些单元测试覆盖:

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

编辑:看来我不需要 Moles 来测试这段代码。另外,我有一个错误,第 5 行和第 6 行颠倒了。

【问题讨论】:

  • 为什么需要 Moles 来测试它?该功能看起来可以使用传统的单元测试技术进行测试。

标签: c# .net unit-testing moles inner-exception


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-24
    • 1970-01-01
    • 1970-01-01
    • 2011-06-06
    • 1970-01-01
    • 2016-02-02
    • 2010-12-29
    • 1970-01-01
    相关资源
    最近更新 更多