Тестовая структура для [вставить язык здесь] - PullRequest
3 голосов
/ 12 мая 2009

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

Стройная с Fitnesse кажется хорошим кандидатом, но меня интересуют все рекомендации.

Возможность использовать одну и ту же среду тестирования в разных языках программирования была бы дополнительным бонусом.

1 Ответ

4 голосов
/ 13 мая 2009

Предполагается, что вы работаете на уровне API. Если я прочитал это неправильно, и вы работаете на уровне графического интерфейса, вы более склонны рассматривать что-то вроде селена или воды.

Рассматривали ли вы написание своей собственной простой тестовой среды, которая выводит результаты TAP (протокол test any), а затем анализируете ее с помощью grind или TAP2HTML?

Серьезно, вывод TAP выглядит так:

1..7
ok 1 - hello world with null value returns 'hello world' string
ok 2 - hello world with bob returns 'hello, bob'
ok 3 - hello world with 123 return 'hello, 123'
ok 4 - hello world with 5K string return hello plus string
ok 5 - special characters
ok 6 - internationalization, fr
ok 7 - internationalization, ja
Looks like you failed 0 tests of 7.

(Если он умрет после шага 5, 1..7 скажет вам, что что-то не так)

Вывод прямой ASCII. В основном у вас будет два глобала, numTestsTotal и numTestExecuted, и вы будете писать такие функции:

sub ok (boolean bExpected, string comment) {
  if (bExpected) {
    print "ok " . numTestsExecuted . " "  . comment . "\n";    
  }else {
    print "not ok" . numTeststotal . " " . comment . "\n";
  }
  numTestsExecuted++;
}


sub eq(int iExpected, int iResult, string comment) {
  if (iExpected==iResult) {
     print "ok " . numTestsExecuted . " " . comment . "\n";
  } else {
     print "not ok" . numTestsExecuted . " " . comment . \n";
  }
  numTestsExecuted++;
}

Вы пишете обычный код в библиотеке, затем ваше тестовое приложение включает библиотеку и тестовый модуль.

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

См. Документацию по TAP: http://testanything.org/wiki/index.php/Main_Page

И Тест :: Дальше

Да, вы можете утверждать, что eq () должна "просто" вызывать ok (). Или вы можете вставить ожидаемые и фактические результаты в выводе. До вас.

В любом случае, существует множество синтаксических анализаторов и интерпретаторов TAP для более важных языков.

...