我目前正在Xcode工作区中构建一个包含3个现有项目的测试套件。 2个应用程序项目和一个通用框架项目。两种应用在用户界面方面都非常相似,但有一些细微差别。
我正在尝试找到一种方法来与 App B 共享我为 App A 创建的XCUITest框架。
当前,应用A 在其AppA.xcodeproj中设置了测试目标。 App A 的所有测试都非常出色且易于维护。我需要将此扩展到 App B ,并将 App A 的框架重构为仅App A专有位,因此 App A 和应用B 可以从一个中央库共享通用的XCUITest框架代码库。
我尝试创建一个新项目,将其移至UI测试代码上,并将新的UI Test目标指向 App 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,我的框架所依赖的XCTest是XCUIApplication和XCUIElement字段。
import XCTest //Causes "Cannot load underlying module for 'XCTest'"
在构建阶段,我尝试将XCTest.framework添加到目标“使用库链接二进制文件”部分,但没有运气。
是否有一种方法可以在测试目标之外使用XCTest框架?
OR
有没有办法将一个项目的测试目标指向另一个项目的应用程序目标?
答案 0 :(得分:2)
您可以将XCTest和任何其他框架链接到任何东西。确保在$(PLATFORM_DIR)/Developer/Library/Frameworks
和LD_RUNPATH_SEARCH_PATHS
中都包含FRAMEWORK_SEARCH_PATHS
。
为共享代码创建框架是一个好主意。