不应该进行单元测试失败

时间:2012-01-05 16:36:55

标签: c# unit-testing

我正在为一个应用程序进行单元测试,下面是一个单元测试,我只是想知道它失败的原因。

测试结果应该是“isosceles”为真,“equalateral”和“scalene”为false,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 个答案:

答案 0 :(得分:6)

你误打IsTrue 第一个参数是要测试的布尔值:

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

您也可以拨打AreEqual

Assert.AreEqual(false, equalateral, "Test Equalateral")

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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"); 

答案 3 :(得分:1)

来自Assert.IsTrue Method (Boolean, String, Object[])的MSDN:

  

验证指定的条件是否为真。断言如果失败则失败   条件是假的。

显然Assert.IsTrue(false,...)会失败。

我认为你的意思是:

Assert.IsTrue(equalateral == false, "Test Equalateral", equilateral);

答案 4 :(得分:0)

对于你必须做的Assert.isFalse(等边......和类似于scalene

的错误案例