Могу ли я связать цель XCUITest с другой целью приложения Проекта ИЛИ использовать XCTest / XCUITest вне цели UI Test Bundle? - PullRequest
0 голосов
/ 31 января 2019

В настоящее время я создаю набор тестов в рабочей области Xcode, которая содержит 3 существующих проекта.2 Приложения проектов и общий рамочный проект.Оба приложения очень похожи в отношении пользовательского интерфейса с некоторыми незначительными отличиями.

Я пытаюсь найти способ поделиться платформой XCUITest, которую я сделал для Приложение A с Приложение B .

В настоящее время App A имеет цель теста, установленную внутри его AppA.xcodeproj.Все тесты App A работают отлично и просты в обслуживании.Мне нужно расширить это до App B и рефакторинга Framework A приложения только для битов App A, так что App A и App B может совместно использовать базовую кодовую базу XCUITest из центральной базы.

Я попытался создать новый проект, переместить код теста пользовательского интерфейса и указать новую цель теста пользовательского интерфейса на исполняемый файл приложения A , но я не мог понять, как его получить.возможность показать.Я установил приложение App A в качестве целевой зависимости на тестовой цели нового проекта> вкладка «Фазы сборки», но не повезло.Мне удалось установить цель App A в схеме новой цели тестирования, но все равно возникла ошибка.

Assertion Failure: CommonBasePage.swift:21: failed: caught "NSInternalInconsistencyException", 
"No target application path specified via test configuration: <XCTestConfiguration: 0x60400014e910>
                      testBundleURL:file:///Users/user.name/Library/Developer/Xcode/DerivedData/.../Debug-iphonesimulator/NewTestTarget-Runner.app/PlugIns/NewTestTarget.xctest/
             testBundleRelativePath:(null)
                  productModuleName:NewTestTarget
                        testsToSkip:(null)
                         testsToRun:NewBasePage/testExample
                 reportResultsToIDE:YES
                  sessionIdentifier:<>
         pathToXcodeReportingSocket:(null)
          disablePerformanceMetrics:no
    treatMissingBaselinesAsFailures:no
                    baselineFileURL:(null)
           baselineFileRelativePath:(null)
              targetApplicationPath:(null)
          targetApplicationBundleID:(null)
     testApplicationDependencies:
{... 

Я предполагаю targetApplicationPath: (null), targetApplicationBundleID:(null) должен иметь допустимые целевые значения, но я не уверен, где еще искать, чтобы установить их.

Я отказался от этого и попытался создать новый проект и цель в качестве Cocoa Touch Framework, чтобы переместить общий код в центральную точку, но не смог импортировать XCTest, от которого зависит моя среда для XCUIApplication иПоля XCUIElement.
import XCTest //Causes "Cannot load underlying module for 'XCTest'"
Я пытался добавить XCTest.framework к целевому разделу «Связать двоичные файлы с библиотеками» на этапах сборки, но безуспешно.

Есть ли способ работы с платформой XCTest за пределами цели тестирования?
ИЛИ
Есть ли способ указать цель тестирования одного проекта на цель приложения другого проекта?

1 Ответ

0 голосов
/ 01 февраля 2019

Вы можете связать XCTest и любые другие фреймворки с чем угодно.Убедитесь, что у вас есть $(PLATFORM_DIR)/Developer/Library/Frameworks в LD_RUNPATH_SEARCH_PATHS и FRAMEWORK_SEARCH_PATHS.

Создание фреймворка для общего кода - хорошая идея.

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