Модульный тест проваливается, когда он не должен - PullRequest
2 голосов
/ 05 января 2012

Я работаю над юнит-тестами для приложения, и ниже приведен юнит-тест, я просто не могу понять, почему он не работает.

Результат теста должен состоять в том, что «равнобедренный» является истинным, а «равный» и «разносторонний» ложным, что Console.WriteLine показывает, что они на самом деле, но по какой-то странной причине тест все равно не проходит. Что я здесь не так делаю? Заранее спасибо.

Я использую фреймворк MSTest.

    public void isIsosceles()
    {
        Triangle triangle = new Triangle(2, 2, 5);

        var isosceles = triangle.isIsosceles();
        var equalateral = triangle.isEquilateral();
        var scalene = triangle.isScalene();

        Console.WriteLine(isosceles);       // True
        Console.WriteLine(equalateral);     // False
        Console.WriteLine(scalene);         // False

        Assert.IsTrue(true, "Test Isosceles", isosceles);
        Assert.IsTrue(false, "Test Equalateral", equalateral);    // Fails, why?
        Assert.IsTrue(false, "Test Scalene", scalene);            // Fails, why?
    }

Ответы [ 5 ]

6 голосов
/ 05 января 2012

Ты неправильно звонишь IsTrue.
Первый параметр - это логическое значение для проверки:

Assert.IsFalse(equalateral, "Test Equalateral");    

Вы также можете позвонить AreEqual:

Assert.AreEqual(false, equalateral, "Test Equalateral")
1 голос
/ 05 января 2012

Из MSDN Assert.IsTrue Method (Boolean, String, Object[]):

Проверяет, что указанное условие истинно.Утверждение не выполняется, если условие ложно.

Очевидно, Assert.IsTrue(false,...) не удастся.

Я думаю, вы имели в виду:

Assert.IsTrue(equalateral == false, "Test Equalateral", equilateral);
1 голос
/ 05 января 2012

Assert.IsTrue проверяет, является ли первый параметр истинным.

То, что вы, вероятно, хотите, это:

    Assert.IsTrue(isosceles, "Test Isosceles");
    Assert.IsFalse(equalateral, "Test Equalateral"); 
    Assert.IsFalse(scalene, "Test Scalene");     

Но что вы можете иметь в виду:

    Assert.AreEqual(true, isosceles, "Test Isosceles");
    Assert.AreEqual(false, equalateral, "Test Equalateral");
    Assert.AreEqual(false, scalene, "Test Scalene"); 
1 голос
/ 05 января 2012
    Assert.IsTrue(isosceles, "Test Isosceles");
    Assert.IsFalse(equalateral, "Test Equalateral");
    Assert.IsFalse(scalene, "Test Scalene");
0 голосов
/ 05 января 2012

для ложных случаев вы должны сделать Assert.isFalse (равный ... и аналогично с разносторонним

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