У своєму тестовому наборі є тест, який виглядає приблизно так:
[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 #).
Отже, я не просто зацікавлений у тому, щоб зняти це попередження зі свого результату. Відповідь на моє запитання також пояснює, чому це попередження в першу чергу включено до бібліотеки, і чому будь-який підхід я повинен використовувати замість цього, краще.
stuffCollection.Count()
в окремій змінній і передаєте її до атрибуту, чи дає вам таку саму помилку?