由于以下错误,我无法运行我的测试用例:
尝试搜索和解决,因为两天但无法解决这个问题,有人可以帮助。
答案 0 :(得分:22)
我能够用Xcode 10.1生成的项目重现此问题。我使用Swift 4.2和CocoaPods作为依赖项管理器。我有以下Podfile:
# Uncomment the next line to define a global platform for your project
platform :ios, '10.0'
target 'MyApp' do
# Comment the next line if you're not using Swift and don't want to use dynamic frameworks
use_frameworks!
# Pods for MyApp
pod 'Alamofire', '4.8.1'
target 'MyAppTests' do
inherit! :search_paths
# Pods for testing
end
target 'MyAppUITests' do
inherit! :search_paths
# Pods for testing
end
end
然后我删除了use_frameworks!
,有关更多详细信息,请参见this link:
# Uncomment the next line to define a global platform for your project
platform :ios, '10.0'
target 'MyApp' do
# Pods for MyApp
pod 'Alamofire', '4.8.1'
target 'MyAppTests' do
inherit! :search_paths
# Pods for testing
end
target 'MyAppUITests' do
inherit! :search_paths
# Pods for testing
end
end
我也收到了这样的警告:
[!] The `MyAppUITests [Debug]` target overrides the `ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES` build setting defined in `Pods/Target Support Files/Pods-MyApp-MyAppUITests/Pods-MyApp-MyAppUITests.debug.xcconfig'. This can lead to problems with the CocoaPods installation
- Use the `$(inherited)` flag, or
- Remove the build settings from the target.
这就是为什么我从MyAppUITests构建设置中删除了这一行:
运行pod deintegrate && pod install
之后,问题消失了。
可能对于具有更多依赖性的项目(例如here),您需要使用其他解决方案。
答案 1 :(得分:8)
这是因为您的pod仅适用于您的Framework目标而不适用于测试目标。将测试目标添加到podfile。
示例:
target 'MyFramework' do
use_frameworks!
pod 'Alamofire', '~> 4.5'
end
target 'MyFrameworkTests' do
use_frameworks!
pod 'Alamofire', '~> 4.5'
end
答案 2 :(得分:7)
检查UITest目标“构建设置”中的部署目标是否设置为与您要测试的主机应用程序相同。以我为例,我稍后添加了UITesting目标,并使用默认的部署目标iOS 12创建了它。如果尝试在低于12的iOS上运行UITest,则会出现问题中提到的错误。 / p>
答案 3 :(得分:6)
我必须将框架的位置添加到目标> mytestTarget>构建设置>运行路径搜索路径下的运行路径搜索路径
答案 4 :(得分:6)
就我而言,我需要用use_frameworks!
分隔UI测试目标。
如果您在 Podfile 顶部的某个位置全局指定了use_frameworks!
,则将UI测试目标从嵌套结构移动到其自身将无济于事。
Podfile (错误)(原始):
platform :ios, '10.0'
inhibit_all_warnings!
use_frameworks!
target 'MyProject' do
pod 'R.swift', '~> 5.0'
pod 'Moya/RxSwift', '~> 12.0'
# and other pods
target 'MyProjectTests' do
inherit! :search_paths
pod 'iOSSnapshotTestCase', '~> 6.0'
end
target 'MyProjectUITests' do
inherit! :search_paths
end
end
出现错误的 Podfile (首先尝试修复):
platform :ios, '10.0'
inhibit_all_warnings!
use_frameworks!
def shared_pods
pod 'R.swift', '~> 5.0'
end
target 'MyProject' do
shared_pods
pod 'Moya/RxSwift', '~> 12.0'
# and other pods
target 'MyProjectTests' do
inherit! :search_paths
pod 'iOSSnapshotTestCase', '~> 6.0'
end
end
target 'MyProjectUITests' do
shared_pods
end
最终有效的 Podfile :
platform :ios, '10.0'
inhibit_all_warnings!
def shared_pods
pod 'R.swift', '~> 5.0'
end
target 'MyProject' do
use_frameworks!
shared_pods
pod 'Moya/RxSwift', '~> 12.0'
# and other pods
target 'MyProjectTests' do
inherit! :search_paths
pod 'iOSSnapshotTestCase', '~> 6.0'
end
end
target 'MyProjectUITests' do
shared_pods
end
答案 5 :(得分:1)
我能够通过遵循Roman Podymov的回答然后运行void func1() {
char result[256];
func2(result, 256);
// after calling, result will carry "a returned string"
}
void func2(char* result, size_t bufferLen) {
strncpy(result, "a returned string", bufferLen);
}
然后运行pod deintegrate
答案 6 :(得分:1)
解决我的问题的方法如下: 1)从pod文件中删除UITests目标。 最初,我在pod文件中包含以下内容:
target 'XUITests' do
inherit! :search_paths
end
2)解囊(解囊)
3)安装吊舱(使用吊舱安装)
4)清理项目并运行项目或UITest
答案 7 :(得分:1)
使用Xcode 10切换到旧版构建系统已解决的问题。
答案 8 :(得分:1)
xCode 11.2在另一个框架中使用Apollo框架。我没有将其更改为可选/必需,而是通过设置为embed对其进行了修复。
出现此特定错误:
捆绑“ XXX”由于损坏或丢失而无法加载 必要的资源。尝试重新安装捆绑软件。库未加载: @ rpath / Apollo.framework / Apollo
我必须嵌入框架
答案 9 :(得分:0)
对我来说,错误在于构建UITests时。 解决方案: Targer的iOS版本错误,我将其替换为经过测试的Target的相同版本,一切正常!
答案 10 :(得分:0)
尝试运行UI Testing Bundle
测试Framework
时,我遇到了这个问题
解决方案很简单:
Build Phases -> + -> New Copy Files Phase -> <select a framework> -> Destination Frameworks
结果是生成<UI_Testing_Bundle_name>-Runner.app
答案 11 :(得分:0)
对于使用Carthage遇到此问题的任何人,我都通过将/usr/local/bin/carthage copy-frameworks
运行脚本阶段添加到UITest目标(而不仅仅是我的主要应用程序目标)来解决了该问题,并将框架添加为输入文件。
答案 12 :(得分:0)
我看到了答案,但没有解释,所以决定发布我的答案。
问题在于,UI测试是在控制主程序的单独应用程序中执行的,因此不能使用主应用程序的框架,因此,如果仅使用Cocoapods UI测试应用程序继承框架的路径,则会在启动时崩溃。
要解决此问题,您需要将框架实际复制到UI测试应用或更新您的Podfile:
use_frameworks!
target 'App' do
pod 'Alamofire'
target 'App_UnitTests' do
inherit! :search_paths
pod 'Quick'
pod 'Nimble'
end
end
target 'App_UITests' do
pod 'Alamofire'
end
答案 13 :(得分:0)
对我来说,此问题是由于我从框架中引用了UIKit类扩展中的某个属性而导致的,该属性未导入引用文件中。通过不使用该属性来修复。我不确定为什么要首先编译-应该是编译时错误,而不是运行时错误。
答案 14 :(得分:0)
就我而言,仅删除inherit! :search_paths
而无需更改文件结构或复制任何Pod即可解决我的问题。
答案 15 :(得分:0)
尝试将应用目标的每个Pod复制到UI测试目标。 到2019年为止。
答案 16 :(得分:0)
在您的测试目标中,将inherit! :search_paths
更改为inherit! :complete
。
有关此操作,请参见documentation。
答案 17 :(得分:0)
答案 18 :(得分:0)
] 3
答案 19 :(得分:-2)
如果您实际上正在使用Cocoapods,您可能只需要运行“pod install”,构建设置将自动更新。