Xcode 10.1: блоки не компилируются при запуске UITest - PullRequest
0 голосов
/ 04 марта 2019

Я пытаюсь реализовать UITests в приложении, над которым я работаю.

Когда я нахожусь в своем файле UITests.swift и пытаюсь запустить приложение из теста, Xcode выдает следующую ошибку длянекоторые из используемых мной модулей:

Command CompileSwift failed with a nonzero exit code

Это выдает эту ошибку для группы модулей, которые прекрасно компилируются при запуске обычного проекта:

enter image description here

Мой PodFile выглядит следующим образом:

# Uncomment the next line to define a global platform for your project
platform :ios, '9.0'

source 'https://github.com/cocoapods/specs.git'

project 'Project.xcodeproj'

use_frameworks!

# Define all thirdparty pods we need
def thirdparty
    pod 'Moya', '~> 11.0'
    pod 'Alamofire'
    pod 'SwiftyJSON'
    pod 'Differ'
    .. a bunch of other pods
end

# Pods for Project project
target 'Project' do
    thirdparty
end

# Pods for ProjectTests
target 'ProjectUITests' do
    thirdparty

    pod 'Nimble'
end

Мне трудно понять, почему это происходит, поскольку мой проект обычно компилируется просто отлично.Другие посты на SO, посвященные этой проблеме, сообщают, что проблема также возникает при создании проекта, а не просто при запуске теста

Вопрос Как я могу убедиться, что все модули, которые я использую в своем проектетакже правильно компилируется при сборке из UITest?

1 Ответ

0 голосов
/ 04 марта 2019

Как я могу убедиться, что все модули, которые я использую в своем проекте, также правильно компилируются при сборке из UITest?

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

target 'ProjectUITests' do
    thirdparty
    pod 'Nimble'
end`

В соответствии с вашим Podfile, у вас естьмодуль Nimble используется только в цели ProjectUITests.Если это единственная цель, которую нужно заполнить, то вполне вероятно, что этот модуль является виновником.

За исключением одного случая (по крайней мере, насколько вы показали), ваш Podfile не указывает версии дляразличные стручки, которые он указывает.Если вы пропустите версию для данного модуля, ваш проект будет использовать последнюю доступную версию.Это означает, что каждый раз, когда вы обновляете свои модули, вы сбрасываете последнюю версию, даже если эта новая версия содержит критические изменения.Было бы безопаснее указать версию, которая, как вы знаете, работает, или, по крайней мере, ограничить версию минимальными версиями и обновлениями исправлений, например:

pod 'Nimble', '~>7.0'

Это позволит CocoaPods автоматически использовать последнюю версию доне включая 8.0.Если разработчик модуля правильно следует схеме семантического управления версиями , это должно гарантировать, что вы не будете непреднамеренно вносить какие-либо критические изменения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...