Боюсь, что нет встроенной функциональности для присоединения метаданных (например, ожидаемого исключения) к строке тестовых параметров, поступающих из фабричного метода.
Однако простое решение заключается впередать тип ожидаемого исключения в качестве регулярного параметра теста ( null , если не ожидается выдача исключения) и заключить проверенный код в метод * Assert.Throws
или Assert.DoesNotThrow
.
[TestFixture]
public class MyTestFixture()
{
private IEnumerable<object[]> TestData
{
get
{
yield return new object[] { "MyWord", "droWyM", null };
yield return new object[] { null, null, typeof(ArgumentNullException) };
yield return new object[] { "", "", null };
yield return new object[] { "123", "321", null };
}
}
[Test, Factory("TestData")]
public void MyTestMethod(string input, string expectedResult, Type expectedException)
{
RunWithPossibleExpectedException(expectedException, () =>
{
// Test logic here...
});
}
private void RunWithPossibleExpectedException(Type expectedException, Action action)
{
if (expectedException == null)
Assert.DoesNotThrow(action);
else
Assert.Throws(expectedException, action);
}
}
Кстати, может быть интересно иметь дополнительное утверждение Assert.MayThrow
, чтобы избавиться от вспомогательного метода.Он может просто принять null в качестве ожидаемого типа исключения.Возможно, вы могли бы создать запрос функции здесь , или вы можете отправить патч.