2014-11-02 161 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