You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

XCUITest构建失败:主目标文件#import提示'NYTPhotoViewerDataSource.h'未找到

XCUITest构建失败:'NYTPhotoViewerDataSource.h'文件找不到

问题场景

首次尝试使用Xcode的XCUITest Framework进行UI测试,按教程创建了新的UI Testing Bundle目标。运行HerdBossUITests.testExample()测试时,项目构建失败,仅XCUITest目标报错,主目标可正常构建。

报错信息

/path/to/code/BaseSyncableEntity.h:13:9: 'NYTPhotoViewerDataSource.h' file not found

报错代码行

#import <Foundation/Foundation.h>
#import "BaseClonableEntity.h"

#import <NYTPhotoViewerDataSource.h> // <-- 此行报错
#import <QuickLook/QuickLook.h>

Podfile配置

NYTPhotoViewer通过CocoaPods引入,当前Podfile仅为主目标配置依赖:

# Uncomment this line to define a global platform for your project
platform :ios, '11.0'

source 'https://github.com/CocoaPods/Specs.git'

target 'HerdBoss' do
    use_modular_headers!
    pod 'AFNetworking', '~> 4.0'
    pod 'Firebase/Analytics'
    pod 'Firebase/Crashlytics'
    pod 'NYTPhotoViewer'
end

完整构建日志

ProcessPCH /path/to/builddir/Build/Intermediates.noindex/PrecompiledHeaders/
SharedPrecompiledHeaders/2970504634487531785/HerdBoss-Prefix.pch.gch 

/path/to/code/HerdBoss/HerdBoss-Prefix.pch 
normal arm64 objective-c com.apple.compilers.llvm.clang.1_0.compiler 
(in target 'HerdBossTests' from project 'HerdBoss')
cd /Users/kenny/inaday/svn-herdboss/trunk/apps/iOS/HerdBoss
    
Precompile of '/path/to/code/HerdBoss/HerdBoss-Prefix.pch'
required by '/path/to/code/HerdBossTests/HerdBossTests.m'
    
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang 
-x objective-c-header -target arm64-apple-ios12.0-simulator -fmessage-length\=0 
-fdiagnostics-show-note-include-stack -fmacro-backtrace-limit\=0 -std\=gnu99 -fobjc-arc 
-gmodules -Wno-trigraphs -fpascal-strings -O0 -fno-common -Wno-missing-field-initializers 
-Wno-missing-prototypes -Wunreachable-code -Wquoted-include-in-framework-header 
-Wno-implicit-atomic-properties -Wno-objc-interface-ivars -Wno-arc-repeated-use-of-weak 
-Wimplicit-retain-self -Wduplicate-method-match -Wno-missing-braces -Wparentheses -Wswitch 
-Wunused-function -Wno-unused-label -Wno-unused-parameter -Wunused-variable -Wunused-value 
-Wempty-body -Wuninitialized -Wno-unknown-pragmas -Wno-shadow -Wno-four-char-constants 
-Wno-conversion -Wconstant-conversion -Wint-conversion -Wbool-conversion -Wenum-conversion 
-Wno-float-conversion -Wnon-literal-null-conversion -Wobjc-literal-conversion 
-Wshorten-64-to-32 -Wpointer-sign -Wno-newline-eof -Wno-selector -Wno-strict-selector-match 
-Wundeclared-selector -Wdeprecated-implementations -Wno-implicit-fallthrough -DDEBUG\=1 
-DOBJC_OLD_DISPATCH_PROTOTYPES\=0 -isysroot 

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/
SDKs/iPhoneSimulator16.4.sdk -fstrict-aliasing -Wprotocol -Wdeprecated-declarations 
-g -Wno-sign-conversion -Winfinite-recursion -Wcomma -Wblock-capture-autoreleasing 
-Wstrict-prototypes -Wno-semicolon-before-method-body -fobjc-abi-version\=2 
-fobjc-legacy-dispatch -index-store-path /path/to/builddir/Index.noindex/DataStore 
-iquote /path/to/builddir/intermediates/HerdBossTests-generated-files.hmap 
-I/path/to/builddir/intermediates/HerdBossTests-own-target-headers.hmap 
-I/path/to/builddir/intermediates/HerdBossTests-all-target-headers.hmap 
-iquote /path/to/builddir/intermediates/HerdBossTests-project-headers.hmap 
-I/path/to/builddir/Build/Products/Debug-iphonesimulator/include 
-I/path/to/builddir/intermediates/DerivedSources-normal/arm64 
-I/path/to/builddir/intermediates/DerivedSources/arm64 
-I/path/to/builddir/intermediates/DerivedSources 
-F/path/to/builddir/Build/Products/Debug-iphonesimulator 
-F/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/
SDKs/iPhoneSimulator16.4.sdk/Developer/Library/Frameworks 
-F/Applications/Xcode.app/Contents/Developer/Library/Frameworks 
-iframework /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/
Developer/Library/Frameworks 
-c /path/to/code/HerdBoss/HerdBoss-Prefix.pch -MD -MT dependencies 
-MF /path/to/builddir/Build/Intermediates.noindex/PrecompiledHeaders/
SharedPrecompiledHeaders/2970504634487531785/HerdBoss-Prefix.pch.d 
-iquote /path/to/builddir/intermediates/HerdBossTests-generated-files.hmap 
-I/path/to/builddir/intermediates/HerdBossTests-own-target-headers.hmap 
-I/path/to/builddir/intermediates/HerdBossTests-all-target-headers.hmap 
-iquote /path/to/builddir/intermediates/HerdBossTests-project-headers.hmap 
-I/path/to/builddir/Build/Products/Debug-iphonesimulator/include 
-I/path/to/builddir/intermediates/DerivedSources-normal/arm64 
-I/path/to/builddir/intermediates/DerivedSources/arm64 
-I/path/to/builddir/intermediates/DerivedSources 
-o /path/to/builddir/Build/Intermediates.noindex/PrecompiledHeaders/
SharedPrecompiledHeaders/2970504634487531785/HerdBoss-Prefix.pch.gch 
--serialize-diagnostics /path/to/builddir/Build/Intermediates.noindex/PrecompiledHeaders/
SharedPrecompiledHeaders/2970504634487531785/HerdBoss-Prefix.pch.dia

In file included from /path/to/code/HerdBoss/HerdBoss-Prefix.pch:18:
In file included from /path/to/code/HerdBoss/Classes/BaseTableViewController.h:12:
In file included from /path/to/code/HerdBoss/Classes/AppController.h:14:
In file included from /path/to/code/HerdBoss/Classes/Settings.h:11:
/path/to/code/HerdBoss/Classes/BaseSyncableEntity.h:12:9: fatal error: 'NYTPhotoViewerDataSource.h' file not found
#import <NYTPhotoViewerDataSource.h>
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.

问题原因

XCUITest目标(HerdBossTests)未配置NYTPhotoViewer的依赖,但编译时引用了主目标的前缀头文件(HerdBoss-Prefix.pch),该前缀头间接引入了依赖NYTPhotoViewer的头文件,导致测试目标找不到对应的库文件。

主目标因在Podfile中配置了依赖,CocoaPods自动为其添加了库的搜索路径和链接设置,可正常构建;而测试目标未被纳入Podfile的依赖配置,缺少这些必要的构建参数。


解决方案

修改Podfile,将测试目标纳入依赖配置范围,有两种方式可选:

方式1:为测试目标单独配置所需依赖

如果测试目标仅需要部分主目标的依赖,可单独声明:

platform :ios, '11.0'
source 'https://github.com/CocoaPods/Specs.git'

target 'HerdBoss' do
    use_modular_headers!
    pod 'AFNetworking', '~> 4.0'
    pod 'Firebase/Analytics'
    pod 'Firebase/Crashlytics'
    pod 'NYTPhotoViewer'
    
    # 为测试目标配置依赖
    target 'HerdBossTests' do
        inherit! :search_paths
        pod 'NYTPhotoViewer'
    end
end

方式2:让测试目标继承主目标的依赖

如果测试目标需要主目标的所有依赖,可通过继承简化配置:

platform :ios, '11.0'
source 'https://github.com/CocoaPods/Specs.git'

target 'HerdBoss' do
    use_modular_headers!
    pod 'AFNetworking', '~> 4.0'
    pod 'Firebase/Analytics'
    pod 'Firebase/Crashlytics'
    pod 'NYTPhotoViewer'
    
    # 测试目标继承主目标的搜索路径和依赖
    target 'HerdBossTests' do
        inherit! :search_paths
    end
end

修改完成后,执行以下命令更新CocoaPods配置:

pod install

重新打开项目的.xcworkspace文件,再次运行XCUITest即可正常构建。


内容的提问来源于stack exchange,提问作者Kenny Wyland

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 10:47:01