Предполагается, что вы работаете на уровне 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 для более важных языков.