gpt4 book ai didi

c# - 具有多个异常的 UnitTest ExpectedException

转载 作者:太空狗 更新时间:2023-10-29 20:42:11 25 4
gpt4 key购买 nike

我想要一个 TestMethod 用于多个异常。问题是测试方法在第一次抛出异常后停止。

我知道我可以做这样的事情:

try 
{
sAbc.ToInteger();
Assert.Fail(); // If it gets to this line, no exception was thrown
}
catch (ArgumentException) { }

但我想使用以下代码库:

[TestMethod, ExpectedException(typeof(ArgumentException), "...")]
public void StringToIntException()
{
sAbc.ToInteger(); // throws an exception and stops here
sDecimal.ToInteger(); // throws theoretically a exception too...
}

而且我不想像这样为每个可能的异常创建一个测试方法:

[TestMethod, ExpectedException(typeof(ArgumentException), "...")]
public void StringToIntException()
{
sAbc.ToInteger();
}

[TestMethod, ExpectedException(typeof(ArgumentException), "...")]
public void StringToIntException()
{
sDecimal.ToInteger();
}

2018-11-09 编辑:

今天,这将根据 Jan David Narkiewicz 的建议进行。但正如我已经提到的。从我今天的观点来看,这将是一个糟糕的测试设计。示例:

    [TestMethod]
public void ExceptionTest()
{
Assert.ThrowsException <FormatException> (() =>
{
int.Parse("abc");
});

Assert.AreEqual(0.1m, decimal.Parse("0.1", CultureInfo.InvariantCulture));

Assert.ThrowsException<FormatException>(() =>
{
decimal.Parse("0.1", new NumberFormatInfo { NumberDecimalSeparator = "," });
});
}

最佳答案

问这个问题已经 7 年了,所以 Assert.ThrowsException 在 Microsoft.VisualStudio.TestTools.UnitTesting for Visual Studio 2017 中可用。

Assert.ThrowsException<exception type goes here>(() =>
{
code that throw exception here
});

Assert.ThrowsException 看起来不像是在 Visual Studio 2015 中存在的。练习留给读者去验证。

关于c# - 具有多个异常的 UnitTest ExpectedException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8238814/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com