Я использую NUnit и Rhino Mocks. Я использую AAA-синтаксис и делаю Arrange и Act в методе setup, и каждый метод Test является Assert.
[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...
}
но я не могу найти ничего подобного.
Знаете ли вы что-нибудь?