Xcode 我是否可以将XUITest目标链接到其他项目';s应用程序目标或在UI测试包目标之外使用XCTest/XCUITest?

Xcode 我是否可以将XUITest目标链接到其他项目';s应用程序目标或在UI测试包目标之外使用XCTest/XCUITest?,xcode,xctest,xcuitest,Xcode,Xctest,Xcuitest,我目前正在一个包含3个现有项目的Xcode工作区中构建一个测试套件。2个应用程序项目和一个通用框架项目。这两个应用程序在UI方面非常相似,但有一些细微的差异 我正试图找到一种方法,将我为应用程序a制作的XUITest框架与应用程序B共享 目前,应用程序A在其AppA.xcodeproj中设置了一个测试目标。所有应用程序A的测试都做得很好,而且易于维护。我需要将其扩展到应用程序B,并将应用程序A的框架重构为仅应用程序A的独占位,以便应用程序A和应用程序B可以从中央库共享公共XUITest框架代码库

我目前正在一个包含3个现有项目的Xcode工作区中构建一个测试套件。2个应用程序项目和一个通用框架项目。这两个应用程序在UI方面非常相似,但有一些细微的差异

我正试图找到一种方法,将我为应用程序a制作的XUITest框架与应用程序B共享

目前,应用程序A在其AppA.xcodeproj中设置了一个测试目标。所有应用程序A的测试都做得很好,而且易于维护。我需要将其扩展到应用程序B,并将应用程序A的框架重构为仅应用程序A的独占位,以便应用程序A应用程序B可以从中央库共享公共XUITest框架代码库

我试图创建一个新项目,移动UI测试代码,并将新的UI测试目标指向App a的可执行文件,但我不知道如何获得显示选项。 我在新项目的测试目标>构建阶段选项卡中将应用程序A应用程序设置为目标依赖项,但没有成功。我能够在新的测试目标方案中设置应用程序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:
{... 
断言失败:CommonBasePage.swift:21:失败:捕获到“NSInternalInconsistencyException”,
“没有通过测试配置指定目标应用程序路径:
testBundleURL:file:///Users/user.name/Library/Developer/Xcode/DerivedData/.../Debug-iphonesimulator/NewTestTarget-Runner.app/PlugIns/NewTestTarget.xctest/
testBundleRelativePath:(空)
productModuleName:NewTestTarget
testsToSkip:(空)
testsToRun:NewBasePage/testExample
ReportResultsToId:是
会话标识符:
pathToXcodeReportingSocket:(空)
失效性能指标:否
处理丢失基线失败:否
baselineFileURL:(空)
baselineFileRelativePath:(空)
targetApplicationPath:(空)
targetApplicationBundleID:(空)
测试应用程序相关性:
{... 
我假设targetApplicationPath:(null),targetApplicationBundleID:(null)应该有合法的目标值,但我不确定要设置它们,还需要在哪里查找

我放弃了这个想法,尝试创建一个新的项目&target作为Cocoa-Touch框架,将公共代码转移到一个中心点,但无法导入XCTest,我的框架依赖于xciapplication和xcielement字段。
import-XCTest//cause“无法加载'XCTest'的底层模块”

我尝试将XCTest.framework添加到构建阶段下的目标“使用库链接二进制文件”部分,但没有成功

有没有办法在测试目标之外使用XCTest框架?


有没有办法将一个项目的测试目标指向另一个项目的应用程序目标?

你可以将XTest和任何其他框架链接到任何东西。确保你在
LD\u运行路径搜索路径
framework\u搜索路径
中都有
$(平台目录)/Developer/Library/Frameworks


为共享代码创建框架是一个好主意。

您可以将XTest和任何其他框架链接到任何东西。确保在
LD\u运行路径搜索路径
框架搜索路径
中都有
$(平台目录)/Developer/Library/Frameworks

为共享代码创建框架是一个好主意