Нет вывода NSLog в терминале из тестов, запущенных с xcodebuild - PullRequest
0 голосов
/ 07 июня 2018

Я пытаюсь реализовать CI на IOS.Я запускаю модульные тесты xcode из командной строки, используя xcodebuild на реальном устройстве (iPad):

xcodebuild test -project MyProject.xcodeproj -scheme tests DEVELOPMENT_TEAM={DEV_TEAM_ID} -destination platform=iOS,id={DEVICE_UUID} build-for-testing -allowProvisioningUpdates -configuration {Debug/Release}

У меня есть один модульный тест, который содержит вызовы NSLog внутри.Проблема в том, что эти журналы не отображаются в окне терминала, в котором вызывался xcodebuild:

Test Suite 'Selected tests' started at 2018-06-07 05:10:45.653
Test Suite 'XcodeTests.xctest' started at 2018-06-07 05:10:45.655
Test Suite 'XcodeTests.xctest' failed at 2018-06-07 05:10:45.655.
        Executed 1 test, with 1 failure (0 unexpected) in 0.000 (0.00) seconds
Test Suite 'Selected tests' failed at 2018-06-07 05:10:45.656.
        Executed 1 test, with 1 failure (0 unexpected in 0.00 (0.003) seconds

Я просмотрел журналы устройств из Window->Devices and Simulators-> View Device Logs Xcode, и похоже, что они есть, но какОбратите внимание (возможно, тот факт, что это Уведомление имеет значение):

Jun  7 05:10:45 MyiPad tests(XcodeTests)[21982] <Notice>: ENTERED TEST
Jun  7 05:10:45 MyiPad tests[21982] <Notice>: CREATED EXPECTATIONS

Я протестировал этот метод запуска на другом компьютере Mac с другим подключенным iPad, и он странным образом работает.Конфигурация с компьютера, на котором он работал для отображения сообщений NSLog в терминале, следующая:

 System Software Overview:

 System Version: macOS 10.13.2 (17C88)
 Kernel Version: Darwin 17.3.0
 Boot Volume: SYSTEM
 Boot Mode: Normal
 Computer Name: Mac001
 User Name: MacUser001
 Secure Virtual Memory: Enabled
 System Integrity Protection: Enabled
 Time since boot: 7 days 48 minutes

 XCODE VERSION DETAILS: 
 Xcode 9.2
 Build version 9C40b

 Device iOS Version: 11.2 (15C114)

Другая конфигурация, на которой он не показывает NSLogs в терминале, следующая:

System Software Overview:

System Version: macOS 10.13.3 (17D47)
Kernel Version: Darwin 17.4.0
Boot Volume: SYSTEM
Boot Mode: Normal
Computer Name: Mac002
User Name: MacUser002
Secure Virtual Memory: Enabled
System Integrity Protection: Enabled
Time since boot: 7 days 48 minutes

XCODE VERSION DETAILS: 
Xcode 9.2
Build version 9C40b

Device iOS Version: 10.2 (14C92)

В чем может быть проблема?Может ли это быть с устройства или рабочей станции Mac?(У меня нет физического доступа к любому из них, только удаленно к Mac).

Ответы [ 2 ]

0 голосов
/ 14 июля 2019

Как сказал Дэн, если вы хотите, чтобы сообщение в вашем тесте печаталось на консоли, лучше использовать printf, а не NSLog

Пример printf("%s", [yourNSString UTF8String]);

0 голосов
/ 09 августа 2018

Действительно для iOS версии 10+, похоже, что NSLog обрабатывается как сообщение и не включается в stdout или stderr, выводимые xcodebuild.Я узнал об этом, заглянув в журнал консоли устройства.Я нашел решение, которое devliubo упомянуло некоторое время назад, но я не был уверен, является ли это общей проблемой (спасибо devliubo).Использование printf вместо NSLog - единственный способ напечатать сообщения для этого конкретного случая.

...