Как проходит этот юнит тест при выполнении? - PullRequest
1 голос
/ 29 февраля 2020

Я сделал две переменные, обе из которых не равны, я создал оператор if для метода, и в Visual Studio он все еще проходит, единственный способ, которым я получил его, был, если я удалил оператор if полностью, а затем использовал

Assert.IsTrue(a == b); 

Но если я попытаюсь использовать его через if операторов, он по какой-то причине проходит

[TestClass]
public class SectionQuiz
{
   static int a;         
    static int  b;              

    [ClassInitialize]
    public static void IntegerInitalize(TestContext testContext)
    {
        a = 10;  // set variables and a != b
        b = 5;
    }

    [TestMethod]
    public void Number1_isnotequalto_number2()
    {
        if (a == b)
        {
            Assert.IsTrue(a==b);
        }
    }
}

1 Ответ

2 голосов
/ 29 февраля 2020

Оператор if не имеет никакого отношения к тому, проходит он или нет. Модульный тест Number1_isnotequalto_number2 ничего не утверждает, поэтому он всегда пройдет.

Добавьте эту строку в конец модульного теста Number1_isnotequalto_number2 и вне оператора if .

Assert.AreEqual(a, b);

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

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

if (a != b)
  Assert.Fail("they are not equal");
// else
// There is no Assert.Pass - just return and it passes
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...