OCUnit тестирование встроенной платформы

ОБНОВЛЕНИЕ: Я закончил тем, что сдался и добавил GHUnit к своему проекту вместо этого. Я встал и работающий с GHUnit в течение минут.

ОБНОВЛЕНИЕ: можно загрузить проект XCode здесь: http://github.com/d11wtq/Cioccolata

Я добавил цель Модульного теста к своему проекту XCode, но ему не удается найти мою платформу, когда он создает, говоря:

Test.octest could not be loaded because a link error occurred. It is likely that dyld cannot locate a framework framework or library that the the test bundle was linked against, possibly because the framework or library had an incorrect install path at link time.

Моя платформа (основная цель проекта) разработана, чтобы быть встроенной и также - путь установки @executable_path/../Frameworks.

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

Дополнительно я имею, добавляет первый шаг (после того, как он создал зависимость) "Файлов Копии", который просто копирует платформу в каталог Frameworks пакета модульного теста.

Кто-либо получил опыт в этом? Я не уверен, что я пропустил.

ОТРЕДАКТИРУЙТЕ |, я вполне уверен, я, как не предполагается, так как платформа не является исполняемым файлом, но я не установил "Тестовый Хост" и "Загрузчик Пакета". Это должно (к моему пониманию) все быть в порядке, так как тестовый пакет связан против платформы и загрузит ее точно так же, как любой другой пакет.

ОТРЕДАКТИРУЙТЕ |, я думаю, что я почти там. Я прочитал следующую статью, которая диктует использование @rpath вместо @executable_path.

http://www.dribin.org/dave/blog/archives/2009/11/15/rpath/

В этом случае это имеет смысл, так как тестовый пакет OCUnit НЕ является исполняемым файлом, это - простой пакет, таким образом, @executable_path не совместим. Таким образом, теперь моей платформе установили ее каталог установки на @rpath и Тестовая цель имеет свои пути поиска во время выполнения (rpath) определенный как каталог сборки. Это сохраняет меня имеющий необходимость скопировать платформу в тестовый пакет и означает, что в целом получающаяся платформа намного более гибка по своей природе, так как это может жить где угодно.

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

Я могу создать тестовую цель, и я могу #import классы от платформы, безошибочной. Но как только я пытаюсь инстанцировать класса от платформы, я получаю следующую ошибку:

/Developer/Tools/RunPlatformUnitTests.include:412: note: Started tests for architectures 'i386' /Developer/Tools/RunPlatformUnitTests.include:419: note: Running tests for architecture 'i386' (GC OFF) objc[50676]: GC: forcing GC OFF because OBJC_DISABLE_GC is set Test Suite '/Users/chris/Projects/Mac/Cioccolata/build/Debug/Test.octest(Tests)' started at 2010-05-21 12:53:00 +1000 Test Suite 'CTRequestTest' started at 2010-05-21 12:53:00 +1000 Test Case '-[CTRequestTest testNothing]' started. /Developer/Tools/RunPlatformUnitTests.include: line 415: 50676 Bus error "${THIN_TEST_RIG}" "${OTHER_TEST_FLAGS}" "${TEST_BUNDLE_PATH}" /Developer/Tools/RunPlatformUnitTests.include:451: error: Test rig '/Developer/Tools/otest' exited abnormally with code 138 (it may have crashed). Command /bin/sh failed with exit code 1

Мой метод тестирования делает не что иное как выделяет и впоследствии выпускает класс HelloWorld, который я создал, чтобы помочь отладить эту установку:

- (void)testNothing {
    CTHelloWorld *h = [[CTHelloWorld alloc] init];
    [h release];
}

Если я заменяю эти строки кода STAssertTrue(YES, @"Testing nothing"); ошибка уходит, даже при том, что класс все еще импортируется.

5
задан Ben Kreeger 18 September 2012 в 15:43
поделиться

2 ответа

Поскольку никто больше не вмешивался в этот вопрос, я закончу, сказав, что SenTestingKit действительно не впечатлил меня сложностью (и уродством) настройки для моих нужд. Я настоятельно рекомендую GHUnit, который работает в пользовательском интерфейсе (или в командной строке, если хотите) и поддерживает использование gdb из коробки. Мне потребовалось несколько минут, чтобы загрузить и использовать GHUnit в моем проекте.

Это тоже красиво. Apple должна поставлять его с Xcode вместо SenTestingKit IMHO.

4
ответ дан 13 December 2019 в 19:22
поделиться

Возможно, вам повезет со следующей статьей , в частности, добавление DYLD_FRAMEWORK_PATH и DYLD_LIBRARY_PATH в исполняемый файл может помочь.

1
ответ дан 13 December 2019 в 19:22
поделиться