gpt4 book ai didi

c# - 单元测试异常属性

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

我有异常(exception)

class SyntaxError : Exception {
public SyntaxError(int l) {
line = l;
}
public int line;
}

我正在使用单元测试来测试类 Parser,它在特定输入时应该抛出上面的异常。我正在使用这样的代码:

    [TestMethod]
[ExpectedException(typeof(Parser.SyntaxError))]
public void eolSyntaxError()
{
parser.reader = new StringReader("; alfa\n; beta\n\n\n\na");
parser.eol();
}

是否有任何智能简单的方法来检查 SyntaxError.line == 1

我想到的最好的是:

    [TestMethod]
public void eolSyntaxError()
{
try {
parser.reader = new StringReader("; alfa\n; beta\n\n\n\na");
parser.eol();
Assert.Fail();
} catch (SyntaxError e) {
Assert.AreEqual(1, e.line);
}
}

我不是很喜欢,有没有更好的办法?

最佳答案

考虑使用 FluentAssertions .您的测试将如下所示:

[TestMethod]
public void eolSyntaxError()
{
parser.reader = new StringReader("; alfa\n; beta\n\n\n\na");

Action parseEol = () => parser.eol();

parseEol
.ShouldThrow<SyntaxError>()
.And.line.Should().Be(1);
}

否则,您的方法已经很不错了。

关于c# - 单元测试异常属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28159214/

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