提供以下功能:我應該單元測試多個(不同)輸入值到一個函數嗎?
public class UnderTest
{
public bool Foo(Bar input)
{
if(input.State != State.Paid)
throw new Exception();
return true;
}
}
請告訴我測試input.State != State.Paid
最好的方式給出State
是enum
?我想出了以下內容。但是,如果添加新的枚舉值,這不會被捕獲。有沒有更好的方法來測試這個或者我應該只關心單個測試?
[Theory]
[InlineData(State.New)]
[InlineData(State.Cancelled)]
[InlineData(State.Complete)]
public void NotPaidBar_ThrowsException(State state)
{
// Arrange
var bar = new Bar()
{
State = state
};
var underTest = new UnderTest();
// Act
Action result =() => underTest.Foo(bar);
// Assert
result
.ShouldThrow<Exception>();
}
您可以創建一個'IState'接口與'布爾UnderTest( )'方法定義。這樣,所有的狀態實現都必須實現'UnderTest'。 – Oliver