在nUnit 3中,进行了相当多的更改,其中 ExpectedException 已被删除以被断言模型替换。
我找到了this和this示例,但建议使用 Assert.That(),所以我想使用this approach,如图所示下方。
//Arrange
string data = "abcd";
//Act
ActualValueDelegate<object> test = () => data.MethodCall();
//Assert
Assert.That(test, Throws.TypeOf<ExceptionalException>());
但是,我想测试一些不同参数的断言,但我似乎无法让它工作。我尝试了以下内容。
List<List<Stuff>> sets = new[] { 0, 1, 2 }
.Select(_ => Enumerable.Repeat(new Stuff(_), _).ToList())
.ToList();
Assert.Throws(() => Transform.ToThings(new List<Stuff>()));
以上工作原理是根据需要创建列表列表并测试 Transform.Stuff()调用。但是,我还没有找到一种方法将设置插入 。
有可能吗?示例在哪里? (大多数搜索都淹没在nUnit 2.x和官方文档站点上,我认为没有什么可以帮助我。)
答案 0 :(得分:3)
您应该考虑使用TestCaseSource属性来定义方法的输入:
[TestCaseSource("StuffSets")]
public void ToThings_Always_ThrowsAnException(List<Stuff> set)
{
// Arrange
// Whatever you need to do here...
// Act
ActualValueDelegate<object> test = () => Transform.ToThings(set);
// Assert
Assert.That(test, Throws.TypeOf<SomeKindOfException>());
}
public static IEnumerable<List<Stuff>> StuffSets =
{
get
{
return new[] { 0, 1, 2 }
.Select(_ => Enumerable.Repeat(new Stuff(_), _).ToList())
.ToList();
}
};
对于从ToThings_Always_ThrowsAnException
(此处,三次)返回的每个List<Stuff>
,这将调用StuffSets
一次。