[英]Unit-test fail when it shouldn't do
我正在为应用程序进行单元测试,下面是一个单元测试,我只是不知道它为什么会失败。
测试结果应该是 "isosceles" 为真,"equalateral" 和 "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
检查第一个参数是否为真。
你可能想要的是:
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 :
验证指定的条件是否为真。 如果条件为假,则断言失败。
显然Assert.IsTrue(false,...)
会失败。
我想你的意思是:
Assert.IsTrue(equalateral == false, "Test Equalateral", equilateral);
使用断言语句是错误的方式。 这是正确的:
Assert.IsTrue(isosceles, "Test Isosceles");
Assert.IsFalse(equalateral, "Test Equalateral");
Assert.IsFalse(scalene, "Test Scalene");
对于错误的情况,您必须执行 Assert.isFalse(equalateral... 与 scalene 类似
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.