@SomeGuyOnAComputer и другие 4 голоса. Забудь, что я сказал, я был слишком дерзким. Если он больше, у вас нет другого выбора.

м наборе тестов есть тест, который выглядит примерно так:

[Fact]
public void VerifySomeStuff()
{
    var stuffCollection = GetSomeStuff();

    Assert.Equal(1, stuffCollection.Count());
}

Этот тест работает, как я и ожидал, но при запуске xUnit выдает предупреждение:

предупреждение xUnit2013: не используйте Assert.Equal () для проверки размера коллекции.

Однако в предупреждении не предлагается альтернативы, и поиск в Google приводит меня к исходному коду в xUnit для теста, который проверяет, выводится ли это предупреждение.

ЕслиAssert.Equal() не правильный способ проверить длину коллекции, что это?

Чтобы уточнить: я понимаю, что мог бы «обмануть» xUnit, чтобы не выдавать это предупреждение, например, извлечение переменной или использованиеAssert.True(stuff.Count() == 1) вместо. Последний просто хакерский, и первый чувствует, что xUnit, например, пытаясь избежать нескольких итерацийIEnumerable<T>, тогда это неправильный путь (потому что я получу подсказки компилятора об этом отдельно, если это проблема), и сам xUnit никогда не должен будет оценивать ввод более одного раза (фактически он, вероятно, получит один и тот же ввод независимо от извлечения переменных, из-за того, как работает вызов функции C #).

Так что я не просто заинтересован в удалении этого предупреждения из моего вывода. Ответ на мой вопрос также объясняетПочему это предупреждение включено в библиотеку в первую очередь, иПочему какой бы подход я не использовал вместо этого лучше.

Ответы на вопрос(3)

Ваш ответ на вопрос