Автоматическое тестирование TFS / xUnit с ClassData использует только первое утверждение - PullRequest
1 голос
/ 09 апреля 2019

У меня есть контейнер класса:

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

Я что-то пропустил или кто-то еще сталкивался с этой проблемой?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...