gpt4 book ai didi

c# - Visual Studio 单元测试拒绝运行

转载 作者:太空宇宙 更新时间:2023-11-03 20:02:57 25 4
gpt4 key购买 nike

我开始使用 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() 只是从类中返回一个私有(private)字符串。希望这会有所帮助。

最佳答案

我的猜测是正确的。当您检查 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();
}

关于c# - Visual Studio 单元测试拒绝运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26070560/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com