2014-11-02 131 views
0

我为单元测试编写了一个类Complex和Class。当+运算符执行测试时会崩溃我的错误。为什么?C#单元测试Visual Studio 2013测试失败

复杂:

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); 
    } 
} 
+0

_“崩溃我的错误”_你能更具体一点吗?我怀疑什么是_crashing_,但也许你会得到一个错误,甚至可能只是一个失败的测试? – 2014-11-02 18:57:03

+0

它的测试失败。 – Aquena 2014-11-02 18:59:30

+0

检查我的答案,并告诉我是否有不清楚的地方。 – mybirthname 2014-11-02 19:02:52

回答

1

的问题是,你是调用AreEqual到这两个类复杂。你应该检查他们的属性是否相等!

这是您需要的代码。

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); 
+0

要做到这一点,我不得不改变对公众的访问,并重新向公众,它可能不是一个好方法? – Aquena 2014-11-02 19:33:30

+0

@Aquena将它们定义为属性!检查我的编辑! – mybirthname 2014-11-02 20:21:00

+0

我得到这个错误'Project1.Complex'没有包含'Re'的定义,也没有找到接受'Project1.Complex'类型的第一个参数的扩展方法'Re'(你是否缺少using指令或者一个程序集引用?)在Assert.AreEqual(c3.Re,c4.Re)中; – Aquena 2014-11-02 20:49:23

0

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

+0

我这样做了,1个解决方案,2个项目(1 - Project1带有类Complex,2 - UnitTest带有Project1的引用)。我可以使用类复杂(创建对象等),但我不能使用属性 - 公共双重Re {get {return re; } set; } public double Im {get {return im; } set; } 为什么? – Aquena 2014-11-02 21:54:29

+0

我认为你的基础项目不编译,看看方法集(不是自动属性)。 – user1618077 2014-11-02 22:01:57

+0

我写了set方法并重建了每个项目 - 这是工作:) – Aquena 2014-11-02 22:07:18