Assert.AreEqual (ожидаемый, фактический) для нескольких ожидаемых значений - PullRequest
5 голосов
/ 22 ноября 2010

Как я могу утверждать, что переменная удовлетворяет любому из двух значений в среде модульного тестирования Visual Studio?

Я видел, что другие инфраструктуры тестирования делают это так:

Assert.That(result.ViewName, Is.EqualTo("HomePage") | Is.Empty);

У меня нет опыта работы с модульным тестированием в Visual Studio.

1 Ответ

5 голосов
/ 22 ноября 2010

Прежде всего, я думаю, что образец строки кода, который вы ввели, содержит ошибку, если вы не собираетесь выполнять побитовое ИЛИ.

Assert.That(result.ViewName, Is.EqualTo("HomePage") || Is.Empty);

Во-вторых, я подозреваю, что здесь вводит в заблуждение тест, поскольку модульное тестирование должно проверять один-единственный конкретный сценарий. Так, если вы присвоили, например, одно значение свойству, вы ожидаете, что это самое значение будет возвращено его получателем.

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

Assert.IsTrue(string.Equals(result.ViewName, "HomePage") || string.Equals(result.ViewName, string.Empty));

С другой стороны, я никогда не тестировал сценарий, в котором я ожидал двух разных результатов от одного и того же модульного теста. Assert.That тоже может быть хорошо.

...