Ошибка подтверждения XCTest в void _XCTFailureHandler (XCTestCase, причина: «Параметр« test »не должен быть нулевым». - PullRequest
0 голосов
/ 27 марта 2020

Случайно получая следующую ошибку после успешного завершения модульных тестов:

Набор тестов «Выбранные тесты» пройдены в 2020-03-27 10: 53: 02.582. Выполнено 4 теста, с 0 ошибками (0 неожиданными) в течение 0,005 (0,009) секунд. BOOL, константный символ /XCTestAssertionsImpl.m:41 2020-03-27 10: 53: 02.598306 + 0530 xctest [66609: 1461801] * Завершение работы приложения из-за необработанного исключения «NSInternalInconsistencyException», причина: «Параметр« test »не должен быть равен нулю. ' *** Первый стек бросить вызов: (0 CoreFoundation 0x00007fff23c7127e __exceptionPreprocess + 350 1 libobj c .A.dylib 0x00007fff513fbb20 objc_exception_throw + 48 2 CoreFoundation 0x00007fff23c70ff8 + [NSException Raise: Формат: аргументы:] + 88 3 Фонд 0x00007fff256e9c1a - [NSAssertionHandler handleFailureInFunction : файл: LineNumber: описание:] + 166 4 XCTest 0x000000010285de1f _XCTFailureHandler + 827 5 XCTest 0x000000010285e2bb _XCTPreformattedFailureHandler + 154 6 libXCTestSwiftSupport.dylib 0x000000010aa81c81 $ s6XCTest14XCTAssertEqual ___ 4file4lineyxyKXK_xyKXKSSyXKs12StaticStringVSutSQRzlF + 2753 7 ShelfTests 0x0000000104d4aeff $ s10SProgram закончился с кодом выхода: 0

Кто-нибудь знает причину? Я работаю на Xcode 11.3.1, у меня нет времени искать причину, через пару часов проверим, а если кто-то ответит, это очень поможет.

1 Ответ

0 голосов
/ 28 марта 2020

Решил проблему сам.

Причина: это происходило из-за того, что асинхронное закрытие / блок работал немного дольше и не заканчивался до завершения тестов.

Решение: Исправить было гораздо проще, чем найти причину root в глубине потока кода. Решил это, добавив ожидание (expectation(description:) ) внутри теста и выполнив его, как только блок asyn c был завершен, ожидая ожидания в течение 1 секунды (waitForExpectations(timeout:, handler:).

...