Visual Studio单元测试拒绝运行

1 c# unit-testing visual-studio-2013

我开始使用Visual Studio和内置单元测试器测试学校项目.该项目是一个用C#编写的类库.到目前为止,我所有的测试都有效.但是,我仍然有一个不能运行的测试.它没有通过或失败,它根本就没有运行.没有给出错误消息,我无法让它运行或调试或任何东西.这是我正在尝试的测试:

[TestMethod()]
    public void PublicDecimalEqualityTest2()
    {
        Formula form1 = new Formula("2.3232000+3.00");
        Formula form2 = new Formula("2.3232+3.0000");
        Assert.IsTrue(form1==form2);
    }
Run Code Online (Sandbox Code Playgroud)

我的类的"=="运算符已正确定义.奇怪的是,这个测试运行并通过:

[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));
    }
Run Code Online (Sandbox Code Playgroud)

知道为什么发布的第一个测试不会运行?

编辑:这是==运营商的代码:

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;}
}
Run Code Online (Sandbox Code Playgroud)

GetFormulaBasic()只需从类中返回一个私有字符串.希望这可以帮助.

Mik*_*ray 5

我的猜测是正确的.==在检查null时,您正在调用实现中的运算符.更换==Object.ReferenceEquals测试空操作里面.在这里,简化了一点:

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();
}
Run Code Online (Sandbox Code Playgroud)