Модульное тестирование C ++ с использованием скриптового языка - PullRequest
3 голосов
/ 18 марта 2011

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

Я имею в виду либо Ruby, либо Perl (потому что я с ними знаком). Кажется, я мог бы использовать SWIG для взаимодействия с кодом C ++.

Есть ли лучшие альтернативы SWIG ? Какой язык сценариев вы бы лично использовали для этой цели?

И, наконец, уместно (и эффективно) использовать этот подход к тестированию?

Ответы [ 3 ]

3 голосов
/ 18 марта 2011

Встроенный: CPP предоставляет относительно простые средства вызова кода C ++ из Perl.

Я рекомендую запустить ваш скрипт, используя следующее (или с эквивалентной директивой внутри тестового скрипта):

perl -MInline=FORCE,NOISY,NOCLEAN test.pl
2 голосов
/ 18 марта 2011

Если вы хотите протестировать свой код C ++ аналогично тому, как вы тестировали бы код Perl, вы можете использовать библиотеку, предназначенную для вывода TAP .

Глядя на страницу со списком производителей TAP Кажется, что только один, разработанный специально для C ++ .

Вы также можете просмотреть страницу GitHub для libtap ++ .

#include <tap++.h>
#include <string>

using namespace TAP;

int foo() {
  return 1;
}

std::string bar() {
  return "a string";
}

int main() {
  plan(3);
  ok(true, "This test passes");
  is(foo(), 1, "foo() should be 1");
  is(bar(), "a string", "bar() should be \"a string\"");
  return exit_status();
}

Который производит что-то вроде:

1..3
ok 1 - This test passes
ok 2 - foo() should be 1
ok 3 - bar() should be "a string"

Что может быть проанализировано с помощью Докажите предоставлено Test :: Harness .


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

1 голос
/ 18 марта 2011

Если вы пишете код на C и компилируете его с помощью компилятора C ++, использование другого языка для тестирования может работать.

Но не для кода, написанного в стиле C ++.

Как сделатьВы проверяете на правильность и отсутствие утечек, копирование-конструкцию, присваивание, перегруженные операторы?Как насчет шаблонов?Ни один язык сценариев не будет вызывать их так же, как в C ++, у многих даже нет концепции передачи по значению.

Тестирование из среды, которую вы в конечном итоге будете использовать для потреблениякод.

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