单元测试在应该失败的时候失败';不要这样做
本文关键字:失败 这样做 候失败 单元测试 | 更新日期: 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");