C# 单元测试在不应'时失败;不行
我正在为一个应用程序进行单元测试,下面是一个单元测试,我不知道为什么它会失败 测试结果应该是“等腰线”为真,“等腰线”和“不等腰线”为假,Console.WriteLine显示它们实际上是真的,但由于某种奇怪的原因,测试失败了。我做错了什么?提前谢谢 我正在使用MSTest框架C# 单元测试在不应'时失败;不行,c#,unit-testing,C#,Unit Testing,我正在为一个应用程序进行单元测试,下面是一个单元测试,我不知道为什么它会失败 测试结果应该是“等腰线”为真,“等腰线”和“不等腰线”为假,Console.WriteLine显示它们实际上是真的,但由于某种奇怪的原因,测试失败了。我做错了什么?提前谢谢 我正在使用MSTest框架 public void isIsosceles() { Triangle triangle = new Triangle(2, 2, 5); var isosceles
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语句是错误的。这是正确的:
Assert.IsTrue(isosceles, "Test Isosceles");
Assert.IsFalse(equalateral, "Test Equalateral");
Assert.IsFalse(scalene, "Test Scalene");
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方法(布尔、字符串、对象[])的MSDN
:
验证指定的条件是否为真。如果
条件是错误的
显然,Assert.IsTrue(false,…)
将失败
我想你的意思是:
Assert.IsTrue(equalateral == false, "Test Equalateral", equilateral);
对于错误的情况,您必须执行Assert.isFalse(与scalene类似)@Nate:UpperCamelCase就不那么模棱两可了。@SLaks我明白了,你用UpperCamelCase来代替PascalCase()。我没有意识到关于使用其中一个或另一个的争论。底线是,公众成员的第一个字母应该是大写。让我们达成一致。为布尔值调用
AreEqual
,是一种不好的做法,会使代码的可读性稍差。是的,但代码可能就是这个意思。@McKay我不在读心术,只是简单地说使用AreEqual
作为一个bool,对于那些可能会顺其自然地发现这个答案的人来说是不好的做法。@AaronMcIver这就是为什么我准确地陈述了我所说的。“是的”因为我同意你的观点,但同时,我认为斯莱克斯所说的可能对OP有所帮助。我们是在帮助OP。他可能犯了这么一个简单的错误。读心术有时会有所帮助。鉴于3个人(斯莱克斯、我和都铎)如何提到断言.AreEqual
,这可能是一个合理的假设?