У меня есть контейнер класса:
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 проверяет только первое утверждение, в случае успеха тест считается успешным независимо от остальных тестов.
Я что-то пропустил или кто-то еще сталкивался с этой проблемой?