Поблочное тестирование и TDD, OCUnit по сравнению с Google Tool Box

Я пытаюсь выбрать между OCUnit и Google Tool Box, у Вас есть какие-либо предпочтения, рекомендовал бы один или другой, почему? Мне очень было бы интересно слышать о Вашем опыте с любым из 2.

Основной проблемой, которую я имею с ними обоими, является управление катастрофическими отказами в испытанных методах (исключая: ПЛОХОЙ ДОСТУП) Ни один из них не смог сказать мне в том, какой класс катастрофический отказ произошел!!!

С Google Панель инструментов i видят, какой набор тестов выполнялся, но не тестовый сценарий (как Вы, как предполагается, делаете, когда Ваш набор тестов имеет 50 тестовых сценариев?)

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

Вот вид сообщения, которое я имею с GTB:

Executed 0 tests, with 0 failures (0 unexpected) in 0.000 (0.000) seconds

Test Suite 'LogicTests' started at 2009-12-14 18:03:15 +0100

 /Users/admin/Documents/Tests/GTBTest/RunIPhoneUnitTest.sh: line 122:   688    Segmentation fault      "$TARGET_BUILD_DIR/$EXECUTABLE_PATH" -RegisterForSystemEvents

 Command /bin/sh failed with exit code 139

Я вижу, что это - это набор тестов 'LogicTests', который породил катастрофический отказ, но это - все.

С OCunit вот сообщение для той же ошибки:

Test Suite 'LogicTests' started at 2009-12-14 17:51:26 +0100
Test Case '-[LogicTests testFail]' started.
/Developer/Tools/RunPlatformUnitTests.include: line 415:   536 Segmentation fault      "${THIN_TEST_RIG}" "${OTHER_TEST_FLAGS}" "${TEST_BUNDLE_PATH}"

По крайней мере, с OCUnit я могу отследить, какой тестовый сценарий выполнялся, и в конечном счете отладьте его (но это могло занять очень долгое время без любого классификационного индекса и информации о номере строки...),

Как Вы имеете дело с этими проблемами?

Заранее спасибо.

PS: вот то, как воспроизвести проблему, это очень просто:

Просто создайте класс с методом, который отказывает, когда он звонил (который происходит все время, когда Вы делаете TDD):

- (void) crashMethod {
 NSMutableArray *crashArray;
 [crashArray addObject:[NSObject new]];
}

И затем создайте тестовый сценарий, который называет это методами:

- (void) testFail {
    ClassToTest *test = [[ClassToTest alloc] init];
 [test crashMethod];
 [test release];
 }

Заранее спасибо, Vincent

10
задан zoul 27 October 2010 в 13:43
поделиться

2 ответа

Думаю, я все равно выберу GTB ..

С xCode 3. Кажется, это известная проблема: lhttp: //osdir.com/ml/xcode-users/2009-10/msg00216.html

С GTB работает нормально. Не могу поверить в это, но похоже, что GTB лучше интегрирован с более новыми версиями xCode, чем OCUnit ....

Для отладки модульных тестов ничего не требуется, он отлично работает с самого начала. (с xCode понадобится куча настроек: http://chanson.livejournal.com/119578.html

С помощью GTB вы можете запускать тесты на устройстве, и у вас есть инструменты для тестирования пользовательского интерфейса (кажется, вы можете создать поддельную иерархию UIView, а затем сравнить ее с что у вас есть во время выполнения). Я скептически отношусь к автоматическому тестированию пользовательского интерфейса (дорого и сложно поддерживать), но это хорошая функция!

http://code.google.com/p/google-toolbox-for-mac/wiki/CodeVerificationAndUnitTesting

3
ответ дан 4 December 2019 в 04:21
поделиться

Кстати, панель инструментов Google теперь печатает сообщения о запуске тестового примера на случай, если кому-то интересно; -)

0
ответ дан 4 December 2019 в 04:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: