我开始使用Visual Studio和内置的单元测试器来测试学校项目。该项目是用C#编写的类库。到目前为止,我的所有测试均有效。但是,我仍然有1个测试将无法运行。它没有通过或失败,它只是无法运行。没有给出错误消息,我无法使其运行或调试或执行任何操作。这是我正在尝试的测试:
[TestMethod()]
public void PublicDecimalEqualityTest2()
{
Formula form1 = new Formula("2.3232000+3.00");
Formula form2 = new Formula("2.3232+3.0000");
Assert.IsTrue(form1==form2);
}
我的课程的“ ==”运算符已正确定义。奇怪的是,此测试运行并通过:
[TestMethod()]
public void PublicDecimalEqualityTest()
{
Formula form1 = new Formula("2.3232000+3.00");
Formula form2 = new Formula("2.3232+3.0000");
Assert.IsTrue(form1.Equals(form2));
}
知道为什么第一次发布的测试无法运行吗?
编辑:这是==
操作员的代码:
public static bool operator ==(Formula f1, Formula f2) {
if (f1==null && f2==null)
{ return true; }
if (f1==null || f2==null)
{return false;}
if (f1.GetFormulaBasic()==f2.GetFormulaBasic())
{ return true; }
else
{ return false;}
}
GetFormulaBasic()
只需从该类返回一个私有字符串。希望这可以帮助。
我的猜测是正确的。==
当您检查null时,您正在实现中调用运算符。替换==
为Object.ReferenceEquals
以测试运算符内部是否为null。在这里,简化了一下:
public static bool operator ==(Formula f1, Formula f2)
{
if (object.ReferenceEquals(f1, f2))
{
return true;
}
if (object.ReferenceEquals(f1, null) || object.ReferenceEquals(f2, null))
{
return false;
}
return f1.GetFormulaBasic() == f2.GetFormulaBasic();
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句