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

Как проверять и тестировать входные аргументы конструктора? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Перегрузка скобок для указателя http://www.cyberforum.ru/cpp-beginners/thread1156245.html
Здраствуйте. Написал небольшой код, всё работает, но не знаю как при динамическом вызове можно было просто использовать a, a... вместо (*a), (*a) .... Вот сам код: #include <iostream> #include...
C++ В массиве структур студент с полями "ИМЯ" "ВОЗРАСТ" "УСПЕВАЕМОСТЬ" выполнить сортировку по успеваемости по возрастанию в массиве структур студент с полями "ИМЯ" "ВОЗРАСТ" "УСПЕВАЕМОСТЬ" выполнить сортировку по успеваемости по возрастанию. Использовать сортировку пузырьком. #include<stdio.h> #include <conio.h>... http://www.cyberforum.ru/cpp-beginners/thread1156240.html
Сведение к двум дифференциальным уравнениям, Рунге-Кутта-Мерсона C++
Здравствуйте. В общем имеется функция y = x(t) y''=g(sin\alpha - \eta cos\alpha) Ее нужно свести к двум дифференциальным уравнениям первого порядка и применить метод Рунге-Кутта-Мерсона. t0 <=...
C++ Перевод из русской раскладки клавиатуры в латинскую
Зравствуйте! Столкнулся с такой проблемой: необходимо реализовать класс для считывания текста из файла, сохранения его в памяти и перевода из русской раскладки клавиатуры в латинскую (замена букв...
C++ Создать линейный односвязный список, упорядоченный по фамилиям продавцов в алфавитном порядке http://www.cyberforum.ru/cpp-beginners/thread1156209.html
Друзья, подскажите, пожалуйста, в чем может быть ошибка? Задача такова: создать линейный односвязный список, упорядоченный по фамилиям продавцов в алфавитном порядке Вот код: struct prodavec {...
C++ Организовать двунаправленный список для хранения элементов структуры, содержащей сведения о фамилии, дате рождения Организовать двунаправленный список для хранения элементов структуры, содержащей сведения о фамилии, дате рождения. Предусмотреть добавление элементов в конец списка, поиск по дате рождения, удаление... подробнее

Показать сообщение отдельно
R_e_n
0 / 0 / 0
Регистрация: 30.07.2012
Сообщений: 35

Как проверять и тестировать входные аргументы конструктора? - C++

24.04.2014, 15:48. Просмотров 231. Ответов 1
Метки (Все метки)

Подскажите, пожалуйста, как проверять и тестировать входные аргументы конструктора?

Пусть есть некоторый класс. И в конструкторе один входной аргумент - строка. Я делаю так:
в конструкторе проверяю, если строка не корректная, я кидаю исключение std::invalid_argument("").

Когда я тестирую я создаю штук 15 объектов, которым передаю в конструкторе разные строки. Если какая-то
строка некорректная, я отлавливаю исключение и проверяю должно ли оно было появиться на этой строке или нет.

Но у меня такое чувство, что нормальные люди так не делают.

Набросал примерный код.
Кликните здесь для просмотра всего текста
C++ (Qt)
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
44
45
46
47
48
49
50
51
52
53
54
55
#include <iostream>
#include <stdexcept>
#include <assert.h>
 
 
class SomeClass {
public:
    SomeClass(const std::string &line) {
        if (line[0] != 'a') {
            // ok
        }
        else
        {
            throw std::invalid_argument("The First character is 'a'! ");
        }
    }
};
 
 
class SomeClassTest {
public:
    void ConstructorTest() {
        bool hasErrorBeen = false;
        try
        {
            SomeClass object1("Hello");
        }
        catch(std::invalid_argument& error)
        {
            hasErrorBeen = true;
        }
        assert(hasErrorBeen == false);
 
        hasErrorBeen = false;
        try
        {
            SomeClass object2("aHello");
        }
        catch(std::invalid_argument& error)
        {
            hasErrorBeen = true;
        }
        assert(hasErrorBeen == true);
 
        // И тут еще 15 таких тестов
    }
};
 
int main() {
 
    SomeClassTest someClassTest;
    someClassTest.ConstructorTest();
 
    return 0;
}


http://ideone.com/cK0b9b
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru