gpt4 book ai didi

c# - NUnit 设置中的 ExpectedException

转载 作者:太空宇宙 更新时间:2023-11-03 20:38:10 31 4
gpt4 key购买 nike

我正在使用 NUnit 和 Rhino Mocks。我使用 AAA 语法并在设置方法中执行 Arrange 和 Act,每个测试方法都是一个断言。

[TestFixture]
public class When_subSystem_throws_exception
{
SomeClass subject; // System under test

[SetUp]
public void Setup()
{
// Arrange
IDependency dependency = MockRepository.GenerateStub<IDependency>();
dependency.Stub(m => m.DoStuff()).Throw(new Exception()); // This method is called from within SomeMethod()

subject = new SomeClass(dependency);

// Act
subject.SomeMethod("Invalid Input");
}

// Assert

[Test]
public void should_log_an_exception_to_the_logger()
{
// Do stuff to verify that an exception has been logged
}

// More tests
}

如您所料,SomeMethod() 中的代码会抛出一个异常(正如预期的那样),这会使每个测试都失败(不需要)。我通过做解决这个问题

try
{
// Act
subject.SomeMethod("Invalid Input");
}
catch(Exception ex)
{
// Swallow, this exception is expected.
}

但这太丑了。

我想做的是

[SetUp]
[ExpectedException] // <-- this works for Test methods, but not for SetUp methods
public void Setup()
{
// etc...
}

但我找不到类似的东西。

你知道什么吗?

最佳答案

我不认为使用像 ExpectedException 这样的属性是个好主意。SetUp 是为测试方法准备的东西,它不应该抛出异常。如果它必须抛出,并且你想限制代码行数。然后像下面这样把它们放在一行中:

try { subject.SomeMethod("Invalid Input"); }catch { }

关于c# - NUnit 设置中的 ExpectedException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4223343/

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