Проблемы С Unit Test

Тема в разделе "C/C++/C#", создана пользователем mariotto, 9 дек 2012.

  1. mariotto

    mariotto Гость

    10. Составить описание класса для представления комплексных чисел. Обеспечить выполнение операций сложения, вычитания и умножения комплексных чисел. На-писать программу, демонстрирующую работу с этим классом. Программа должна содержать меню, позволяющее осуществить проверку всех методов класса.

    Вообщем началось все с того что написал программу на с++, но VS 2010 не захотело создавать тесты, тогда я переписал под шарп, но автоматически созданные тесты не сработали. Объясните пожалуйста принцип Unit Test-ов. И помогите их создать. Вот код самой программы:
    Код (C++):
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    namespace ComplexDigit
    {
    class MyComplexDigit
    {
    public double A { get; set; }//a
    public double B { get; private set; }//b
    public MyComplexDigit() { }//конструктор по умолчанию
    public MyComplexDigit(double a, double b)//конструктор с параметрами
    {
    this.A = a;
    this.B = b;
    }
    public override string ToString()//переопределение ToString
    {
    if (this.A == 0 && this.B == 0)
    {
    return String.Format("0");
    }
    else
    {
    return String.Format("{0} + {1} i", this.A, this.B);
    }
    }
    public static MyComplexDigit operator +(MyComplexDigit temp, MyComplexDigit temp1)
    {
    double i, j;
    i = temp.A + temp1.A;
    j = temp.B + temp1.B;
    return new MyComplexDigit(i, j);
    }
    public static MyComplexDigit operator *(MyComplexDigit temp, MyComplexDigit temp1)
    {
    double i, j;
    i = temp.A * temp1.A - temp.B * temp1.B;
    j = temp.A * temp1.B + temp1.A * temp.B;
    return new MyComplexDigit(i, j);
    }
    public static MyComplexDigit operator -(MyComplexDigit temp, MyComplexDigit temp1)
    {
    double i, j;
    i = temp.A - temp1.A;
    j = temp.B - temp1.B;
    return new MyComplexDigit(i, j);
    }
    }
    }
    namespace ComplexDigit
    {
    class Program
    {
    static void Main(string[] args)
    {
    MyComplexDigit z = new MyComplexDigit(8, 2);
    MyComplexDigit z2 = new MyComplexDigit(5, 7);
    MyComplexDigit z1 = z -z2;
    Console.WriteLine("Z1 = {0}",z1);
    Console.Read();
    }
    }
    }
    Вот что создалась автоматически для тестирования переопределенных методов, я туда не лез
    Код (C++):
    using ComplexDigit;
    using Microsoft.VisualStudio.TestTools.UnitTesting;
    using System;

    namespace TestProject1
    {


    /// <summary>
    ///Это класс теста для MyComplexDigitTest, в котором должны
    ///находиться все модульные тесты MyComplexDigitTest
    ///</summary>
    [TestClass()]
    public class MyComplexDigitTest
    {


    private TestContext testContextInstance;

    /// <summary>
    ///Получает или устанавливает контекст теста, в котором предоставляются
    ///сведения о текущем тестовом запуске и обеспечивается его функциональность.
    ///</summary>
    public TestContext TestContext
    {
    get
    {
    return testContextInstance;
    }
    set
    {
    testContextInstance = value;
    }
    }




    /// <summary>
    ///Тест для ToString
    ///</summary>
    [TestMethod()]
    public void ToStringTest()
    {
    MyComplexDigit target = new MyComplexDigit(); // TODO: инициализация подходящего значения
    string expected = string.Empty; // TODO: инициализация подходящего значения
    string actual;
    actual = target.ToString();
    Assert.AreEqual(expected, actual);
    Assert.Inconclusive("Проверьте правильность этого метода теста.");
    }

    /// <summary>
    ///Тест для op_Addition
    ///</summary>
    [TestMethod()]
    public void op_AdditionTest()
    {
    MyComplexDigit temp = null; // TODO: инициализация подходящего значения
    MyComplexDigit temp1 = null; // TODO: инициализация подходящего значения
    MyComplexDigit expected = null; // TODO: инициализация подходящего значения
    MyComplexDigit actual;
    actual = (temp + temp1);
    Assert.AreEqual(expected, actual);
    Assert.Inconclusive("Проверьте правильность этого метода теста.");
    }

    /// <summary>
    ///Тест для op_Multiply
    ///</summary>
    [TestMethod()]
    public void op_MultiplyTest()
    {
    MyComplexDigit temp = null; // TODO: инициализация подходящего значения
    MyComplexDigit temp1 = null; // TODO: инициализация подходящего значения
    MyComplexDigit expected = null; // TODO: инициализация подходящего значения
    MyComplexDigit actual;
    actual = (temp * temp1);
    Assert.AreEqual(expected, actual);
    Assert.Inconclusive("Проверьте правильность этого метода теста.");
    }

    /// <summary>
    ///Тест для op_Subtraction
    ///</summary>
    [TestMethod()]
    public void op_SubtractionTest()
    {
    MyComplexDigit temp = null; // TODO: инициализация подходящего значения
    MyComplexDigit temp1 = null; // TODO: инициализация подходящего значения
    MyComplexDigit expected = null; // TODO: инициализация подходящего значения
    MyComplexDigit actual;
    actual = (temp - temp1);
    Assert.AreEqual(expected, actual);
    Assert.Inconclusive("Проверьте правильность этого метода теста.");
    }
    }
    }
    Насколько я понимаю надо здесь самому задавать тестовые наборы типа:
    Код (C++):
    MyComplexDigit temp = new MyComplexDigit(8, 2); // TODO: инициализация подходящего значения
    MyComplexDigit temp1 = new MyComplexDigit(5, 7); // TODO: инициализация подходящего значения
    MyComplexDigit expected =new MyComplexDigit(3, -5); // TODO: инициализация подходящего значения
    Для вычитания. Но решил посоветоваться т.к. выдает ошибку:
    Код (Text):
    Непройденный    op_SubtractionTest  TestProject1    Ошибка в Assert.AreEqual. Ожидается: <3 + -5 i>. Фактически: <3 + -5 i>.
     
  2. mariotto

    mariotto Гость

    Решил проблему так:
    Код (C++):
                MyComplexDigit temp = new MyComplexDigit(8, 2); // TODO: инициализация подходящего значения
    MyComplexDigit temp1 = new MyComplexDigit(5, 7); // TODO: инициализация подходящего значения
    string expected = new MyComplexDigit(3, -5).ToString (); // TODO: инициализация подходящего значения
    string actual;
    actual = (temp - temp1).ToString();
    Assert.AreEqual(expected, actual);
    //Assert.Inconclusive("Проверьте правильность этого метода теста.");
    Видимо экземпляр моего класса сравнить невозможно=(
    Но и моя реализация по моему неправильная, хоть и работает...


    И ещё вопрос: как задать параметры тестовому классу? Такой вариант не сработал:
    Код (Text):
     [TestMethod()]
    public void op_SubtractionTest(double A,double B)
    {

    MyComplexDigit temp = new MyComplexDigit(8, 2); // TODO: инициализация подходящего значения
    MyComplexDigit temp1 = new MyComplexDigit(5, 7); // TODO: инициализация подходящего значения
    string expected = new MyComplexDigit(3, -5).ToString(); // TODO: инициализация подходящего значения
    string actual;
    actual = (temp - temp1).ToString();
    Assert.AreEqual(expected, actual);
    //Assert.Inconclusive("Проверьте правильность этого метода теста.");
    }
    Думаю это из-за пометки [TestMethod()]. Как решить? Так как по заданию, я повторюсь:Программа должна содержать меню, позволяющее осуществить проверку всех методов класса.
    Причем обязательно модульный тест.
     
  3. rrrFer

    rrrFer Well-Known Member
    Команда форума C\C++ Team

    Регистрация:
    6 сен 2011
    Сообщения:
    1.324
    Симпатии:
    36
    наверное надо оператор == перегрузить
     
  4. mariotto

    mariotto Гость

    Не понял, объясни как
     
  5. rrrFer

    rrrFer Well-Known Member
    Команда форума C\C++ Team

    Регистрация:
    6 сен 2011
    Сообщения:
    1.324
    Симпатии:
    36
    мне кажется вы что-то не так делаете.

    Добавлено:
    Код (Text):
    class ComplexDigit {
    //...
    friend bool operator==(const ComplexDigit& a, const ComplexDigit& b);
    //...
    }

    bool operator==(const ComplexDigit& left, const ComplexDigit& b) {
    return a.A == b.A && a.B == b.B;
    }
    как-то так на С++

    Добавлено: но это только предположения, я понятия не имею как там юнит тесты в шарпе работают, на самом деле.
     
Загрузка...
Похожие Темы - Проблемы Unit Test
  1. aliaksandr89
    Ответов:
    3
    Просмотров:
    126
  2. Amfion
    Ответов:
    5
    Просмотров:
    122
  3. wowa
    Ответов:
    7
    Просмотров:
    380
  4. John_Tavarez
    Ответов:
    0
    Просмотров:
    338
  5. Валентин Амбер
    Ответов:
    11
    Просмотров:
    347

Поделиться этой страницей