Как вы можете использовать служебные функции с UnitTest ++ - PullRequest
0 голосов
/ 23 марта 2009

Я использую UnitTest ++ для модульного тестирования кода C ++.

В моих тестах есть группа тестов, которые я повторяю несколько раз. То, что я хотел бы для служебной функции, чтобы выполнить эти тесты. Короче, я бы хотел взять это:

TEST( foo ) {
    Foo one;
    Foo two;

    // init one & two
    // lots of CHECK_CLOSE(one.bar, two.bar, 1e-5); in repeating cycles
}

TEST( bar ) {
    Foo one;
    Foo two;

    // init one & two
    // lots of CHECK_CLOSE(one.bar, two.bar, 1e-5); in repeating cycles
}

И используйте это:

void blah( const Foo& one, const Foo& two ) {
    // lots of CHECK_CLOSE(one.bar, two.bar, 1e-5);
}

TEST( foo ) {
    Foo one;
    Foo two;

    // init one & two
    blah(one, two);
}

TEST( bar ) {
    Foo one;
    Foo two;

    // init one & two
    blah(one, two);
}

Это не работает из-за макросов UnitTest ++. Как лучше всего подойти к этой проблеме?

edit : пара мыслей, которые я сейчас не могу проверить.

  1. Если я использую прибор с функцией полезности в struct, смогу ли я вызвать макросы UnitTest ++ из этой функции?
  2. Я могу написать макрос для выполнения общих тестов. Мне это не очень нравится, но, по крайней мере, я очень сухо ...

Ответы [ 3 ]

2 голосов
/ 11 мая 2009

Напишите макрос, чтобы сделать это. Не позволяйте заклинанию «макросы - зло» скрывать этот факт от вас: макросы предназначены для генерации повторяющегося кода.

0 голосов
/ 23 марта 2009

Сделайте свою общую функцию проверки для возврата bool. И затем ПРОВЕРЬТЕ или ПОСТАВЛЯЕТЕ результат вашей общей функции в каждом ТЕСТЕ.

0 голосов
/ 23 марта 2009

Я бы рекомендовал не делать этого, потому что в результате вы теряете много информации о том, какой тест не пройден, функция-обертка теперь включает в себя функциональность двух или более тестов, поэтому в случае неудачи вы должны проследить, чтобы увидеть в чем причина неудачного теста.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...