我有一个容器类:
public class MyContainer : IEnumerable<object[]>
{
public IEnumerator<object[]> GetEnumerator()
{
var returns = new List<string>
{
"zero",
"one",
"two",
"three",
"four"
};
foreach(var val in returns)
{
yield return new object[] {new MyClass{Value = val}};
}
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
}
我创建了一个简单的测试类,其中只有一个值:
public class MyClass
{
public string Value { get; set; }
}
然后我有一个单元测试,就像这样:
[Theory]
[ClassData(typeof(MyContainer))]
public void T(MyClass v)
{
Assert.Equal("one", v.Value);
}
然后我将测试与TFS中的测试用例相关联。如果我运行测试并断言为“一个”,则TFS中的测试将按预期失败,并且日志显示除一个测试外所有测试都将失败。
当我更改断言以测试“零”时(即,迭代中的第一个),即使发布日志显示每个“非零”列表明显失败,测试仍会通过。 trx文件也显示了此结果,但结果失败,但是测试显示成功,最后在日志中显示了此信息:
2019-04-09T12:02:02.6247328Z Total Tests : 1, Passed Tests : 1
据我了解,似乎TFS / xUnit仅测试第一个断言,如果成功,则不管其余测试如何,该测试均被视为成功。
我错过了什么,还是其他人遇到了这个问题?