首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >忽略xUnit.net中的异常

忽略xUnit.net中的异常
EN

Stack Overflow用户
提问于 2010-12-14 01:15:09
回答 6查看 7.3K关注 0票数 14

在某些情况下,我并不关心抛出什么异常(只要抛出某个异常)。不幸的是,

代码语言:javascript
复制
Assert.Throws<Exception>(someDelegate);

除非抛出Exception的实例(因此不是派生类的实例),否则不会传递。我知道我可以获得我想要的行为

代码语言:javascript
复制
Exception exception = Record.Exception(someDelegate);
Assert.NotNull(exception);

但它读起来不对劲。我是不是在xUnit中遗漏了一些我想要的行为?这里有两个测试,它们表明了我的意思:

代码语言:javascript
复制
[Fact]
public void Throws_exception_and_passes() {
    Exception exception = Record.Exception(
        () => { throw new InvalidOperationException(); }
    );
    Assert.NotNull(exception);
}

[Fact]
public void Throws_exception_and_fails() {
    Assert.Throws<Exception>(
        () => { throw new InvalidOperationException(); }
    );
}
EN

回答 6

Stack Overflow用户

发布于 2010-12-15 22:55:35

根据此处的文档:

http://xunit.codeplex.com/wikipage?title=HowToUse&referringTitle=Home

你必须指定你想要抛出的异常类型。一般来说,这是一个很好的实践。您应该能够预测测试将抛出什么类型的异常的场景。您应该能够以一种允许您预测这一点的方式来设计您的方法和测试。

有一些方法可以绕过这一点,比如尝试捕捉自己,但你应该考虑改变一下你的设计。

票数 8
EN

Stack Overflow用户

发布于 2015-09-09 07:54:43

在提出这个问题时,它还不存在,但是现在可以使用Assert.ThrowsAny<Exception>来测试从Exception派生的任何异常(因此可以测试任何异常),以及诸如Assert.ThrowsAny<ArgumentException>之类的变体,它将测试从ArgumentException派生的任何异常等等。

票数 5
EN

Stack Overflow用户

发布于 2010-12-15 23:00:33

如果你想做你自己的Custom Assertion,xUnit不会妨碍你,比如:

代码语言:javascript
复制
public static bool Throws<T>(this Action action, bool discardExceptions = false) 
    where T : Exception
{
    try
    {
        action.Invoke();
    }
    catch (T)
    {
        return true;
    }
    catch (Exception)
    {
        if (discardExceptions)
        {
            return false;
        }
        throw;
    }
    return false;
}

或者:

代码语言:javascript
复制
public static bool Throws(this Action action)
{
    try
    {
        action.Invoke();
    }
    catch (Exception)
    {
       return true;
    }
    return false;
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4431479

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档