【问题标题】:C# Unit Test Visual Studio 2013 Test FailedC# 单元测试 Visual Studio 2013 测试失败
【发布时间】:2014-11-02 18:54:36
【问题描述】:

我为单元测试编写了一个类 Complex 和类。当 + 运算符执行测试时,我的错误会崩溃。为什么?

复杂:

    private double re,im;

    public Complex(double re = 0.0, double im = 0.0)
    {
        this.re = re;
        this.im = im;
    }

    public static Complex operator +(Complex C1, Complex C2)
    {

        return new Complex(C1.re+C2.re,C1.im+C2.im);
    }

单元测试:

[TestClass]
public class UnitTest1
{
    [TestMethod]
    public void ComplexPlus()
    {
        Complex c1 = new Complex(4.6, 1.6), c2 = new Complex(6.63, 2.67);
        Complex c3 = c1 + c2;
        Complex c4 =  new Complex(11.23, 4.27);
        Assert.AreEqual(c3,c4 );
    }
}

【问题讨论】:

  • “我的错误崩溃了” 你能说得更具体一点吗?我怀疑有什么事情是崩溃,但也许你得到一个错误,甚至可能只是一个失败的测试?
  • 检查我的答案,如果有什么不清楚的地方告诉我。

标签: c# unit-testing visual-studio-2013


【解决方案1】:

问题是您将 AreEqual 称为两个类 Complex。你应该检查他们的 properties 是否相等!

这是您需要的代码。

Assert.AreEqual(c3.Re,c4.Re);
Assert.AreEqual(c3.Im,c4.Im);

编辑:添加属性

private double _re, _im;

public Complex(double re = 0.0, double im = 0.0)
{
    _re = re;
    _im = im;
}

public double Re
{
     get { return _re; }
     set { _re = value; }//or just get !
}

public double Im
{
     get { return _re; }
     set { _re = value; }//or just get !
}

支票就是这个。

Assert.AreEqual(c3.Re,c4.Re);
Assert.AreEqual(c3.Im,c4.Im);

【讨论】:

  • 要做到这一点,我必须改变对公众的访问权限,这可能不是一个好方法?
  • 我收到此错误 1 ​​'Project1.Complex' 不包含 'Re' 的定义,并且找不到接受类型为 'Project1.Complex' 的第一个参数的扩展方法 'Re'(是您缺少 using 指令或程序集引用?)在 Assert.AreEqual(c3.Re, c4.Re);
  • @Aquena 你在类 Complex 中添加公共属性吗?!
  • 是的 - public double Re { get { return re; } } public double Im { 得到 { 返回 im; } }
  • 这可能是因为我在 1 个解决方案上的 2 个项目中工作,但我不知道如何解决它。
【解决方案2】:

看起来您在 2 个项目中声明了同一个类。 删除一个并将一个项目的引用添加到另一个项目(将基础项目的引用添加到测试项目)。

【讨论】:

  • 我做到了,1 个解决方案,2 个项目(1 - 具有复杂类的 Project1,2 - 具有对 Project1 的引用的 UnitTest)。我可以使用类 Complex(创建对象等),但我不能使用属性 - public double Re { get { return re; } 放; } public double Im { 得到 { 返回 im; } 放; } 为什么?
  • 我认为你的基础项目没有编译,看方法集(不是autoproperty)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-01-12
  • 2016-05-12
  • 1970-01-01
  • 1970-01-01
  • 2014-10-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多