2014-11-02 3 views
0

Я написал класс Complex и класс для модульных тестов. Когда оператор + выполняет тесты, выдает мою ошибку. Зачем?C# Unit Test Visual Studio 2013 Test Failed

комплекс: тест

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_, но, возможно, вы получаете ошибку или даже, возможно, просто неудачный тест? –

+0

Это не удалось. – Aquena

+0

Проверьте мой ответ и скажите мне, если что-то неясно. – mybirthname

ответ

1

Проблема заключается в том, что вы вызов AreEqual к комплексу обоих классов. Вы должны проверить, соответствуют ли их свойства!

Вот код, который вам нужен.

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

EDIT: Объявлять

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

, чтобы сделать это, я должен изменить доступ к im и re для публики, вероятно, это не хороший метод? – Aquena

+0

@Aquena определяет их как свойства! проверьте мое редактирование! – mybirthname

+0

Я получаю эту ошибку «Project1.Complex» не содержит определения для «Re» и никакого метода расширения «Re», принимающего первый аргумент типа «Project1.Complex», можно найти (вам не хватает директивы using или ссылку на сборку?) в Assert.AreEqual (c3.Re, c4.Re); – Aquena

0

Это выглядит так же, как и у 2 проектов. Удалите один и добавьте ссылку из одного проекта в другой (добавьте ссылку на базовый проект для тестирования проекта).

+0

Я сделал это, 1 решение, 2 проекта (1 - Project1 с классом Complex, 2 - UnitTest со ссылками на Project1). Я могу использовать класс Complex (создать объект и т. Д.), Но я не могу использовать свойства - public double Re {get {return re; } задавать; } public double Im {get {return im; } задавать; } Почему? – Aquena

+0

Я думаю, что ваш базовый проект не скомпилирован, посмотрите на метод set (not autoproperty). – user1618077

+0

Я написал метод набора и перестроил каждый проект - это работа :) – Aquena