Форум программистов, компьютерный форум CyberForum.ru

Тестирование класса - C++

Восстановить пароль Регистрация
 
Влад1986
1 / 1 / 0
Регистрация: 01.02.2014
Сообщений: 8
13.02.2014, 22:45     Тестирование класса #1
Добрый вечер.
Создал класс для работы со строкам. Нужно его протестировать. В теории понимаю, что самый идеальный тест - это программа, которая считывает строки из одного файла и записывает в другой. Но как программно это реализовать не могу понять. Литературы толковой тоже не нашел. Помогите, пожалуйста.
Описание класса:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#ifndef BUFSTR_H
#define BUFSTR_H
#include<string.h>
#include<stdlib.h>
#include<stdio.h>
 
class BufStr
{
    char* str;      // переменная
    
    public:
        BufStr(char* str1);
        BufStr();
        ~BufStr (){if (str !=0) {
            delete[] str;
        }
    };
    void setstr(char* str1);                // назначаем строку переменной 
        void setstr(BufStr *strbuf1);           // --//--
        char* getstr();                         // возвращает переменную
        void loadfromfile(char* filename);      // загрузка в переменную из файла
        void savetofile(char* filename);
//  protected:
};
 
#endif
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.02.2014, 22:45     Тестирование класса
Посмотрите здесь:

внук родительского класса не может работать с полями дедовского класса; почему? C++
C++ Вызов метода производного класса через обращение к методу базового класса
Как получить private переменную класса, функцей членом другого класса C++
Как обраиться к функции класса через другую функцию класса (друга)? C++
Определение и тестирование класса C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
RazrFalcon
 Аватар для RazrFalcon
1371 / 1228 / 260
Регистрация: 10.11.2013
Сообщений: 3,727
13.02.2014, 22:57     Тестирование класса #2
Создаете еще одно приложение. В него инклудите ваш класс и начинаете вызывать методы этого класса со всякими левыми значениями. Вот и самое простое тестирование.

То есть заранее подготавливаете список входных и выходных данный, и проверяете что бы все пары обработались верно.
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
13.02.2014, 23:04     Тестирование класса #3
не много не по теме:
вы зачем себе такой класс написали? чтобы поупражняться в написании подобных вещей или
чтобы облегчить работу со строками в других местах проекта/программы/... ?
Влад1986
1 / 1 / 0
Регистрация: 01.02.2014
Сообщений: 8
13.02.2014, 23:21  [ТС]     Тестирование класса #4
вы зачем себе такой класс написали?
Чтобы просто поупражняться)
Stella
75 / 75 / 5
Регистрация: 26.02.2013
Сообщений: 224
14.02.2014, 00:13     Тестирование класса #5
Цитата Сообщение от Влад1986 Посмотреть сообщение
Но как программно это реализовать не могу понять.
Есть уже написаные библиотеки для тестирования. Например Boost::Test, CppUnit, CxxTest.
На С# там в студии есть встроенные инструменты для тестирования.

Ну а самый простой способ - RazrFalcon, прав: создать объект класса и брать и вызывать методы с разными значениями.
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
14.02.2014, 00:14     Тестирование класса #6
если упрощенно, то в таких случаях вызывают какие-то методы а потом проверяют что они отработали
как ожидалось. это ожидание тоже кодируется. есть всякие спец либы для этого дела.
вот простой вариант на коленке чтобы было понятно:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <iostream>
#include <string>
#include <cassert>
 
class SuperClass
{
  int m_value;
public:
  explicit SuperClass(int value = 0)
    : m_value(value)
  {
  }
 
  int GetValue() const
  {
    return m_value;
  }
 
  void SetValue(int value)
  {
    m_value = value;
  }
 
  void AddValue(int value)
  {
    m_value += value + 1;
  }
};
 
int main()
{
  SuperClass superClass(666);
  assert(superClass.GetValue() == 666 && "superClass.GetValue() == 666");
 
  superClass.SetValue(777);
  assert(superClass.GetValue() == 777 && "superClass.GetValue() == 777");
 
  superClass.SetValue(0);
  superClass.AddValue(5);
  assert(superClass.GetValue() == 0 + 5 && "superClass.GetValue() == 0 + 5");
 
  return 0;
}
Yandex
Объявления
14.02.2014, 00:14     Тестирование класса
Ответ Создать тему
Опции темы

Текущее время: 11:17. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru