我正在为一个应用程序进行单元测试,下面是一个单元测试,我只是想知道它失败的原因。
测试结果应该是“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?
}
答案 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
的错误案例