单元测试在应该失败的时候失败';不要这样做

本文关键字:失败 这样做 候失败 单元测试 | 更新日期: 2023-09-27 18:19:28

我正在为一个应用程序进行单元测试,下面是一个单元测试,我不知道它为什么失败。

测试结果应该是"等腰"为真,"等边"answers"scalene"为假,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?
    }

单元测试在应该失败的时候失败';不要这样做

您错误地调用了IsTrue
第一个参数是要测试的布尔值:

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

您也可以调用AreEqual:

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

Assert.IsTrue检查第一个参数是否为true。

你可能想要的是:

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

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

验证指定的条件是否为true。如果条件为false。

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

我想你的意思是:

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

对于错误情况,您必须执行Assert.isFalse(equalilater…以及类似的scalene

使用断言语句是错误的。这是正确的:

    Assert.IsTrue(isosceles, "Test Isosceles");
    Assert.IsFalse(equalateral, "Test Equalateral");
    Assert.IsFalse(scalene, "Test Scalene");
相关文章: