我正在开始一个新的 Swift 项目,并尝试为其创建单元测试。我将 Google Analytics 框架添加到项目中,并链接了 SystemConfiguration、CoreData、libsqlite3、libz 和 libGoogleAnalyticsServices。
然后我必须手动创建一个桥接 header 并添加我将立即使用的 GA header 。该应用程序已启动并运行并发布到 GA。然后我尝试添加一些单元测试。
发生这种情况后,如果我向测试目标添加桥接 header ,我会在我的桥接 header 中收到一个错误,即 'GAI.h' file not found
。我还收到来自编译器的 Segmentation Fault 11
错误。如果没有桥接头,错误仍然相同。
我已尝试将我的测试目标与 SystemConfiguration、CoreData、libsqlite3、libz 和 libGoogleAnalyticsServices 相关联。这并没有消除错误。
目前我的桥接头没有太多内容。
#import "GAI.h"
#import "GAILogger.h"
#import "GAITrackedViewController.h"
#import "GAIFields.h"
我也在使用 cocoapods,但目前我没有将它与 Google Analytics 一起使用,因为每次运行 pod 进程时我都需要手动更改配置文件。如果有帮助,这是我的 pod 文件:
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.1'
pod 'JVFloatLabeledTextField'
# Swift Pods
pod 'Alamofire'
pod 'JSONHelper'
target 'example' do
end
target 'exampleTests' do
pod 'Quick', :git => "https://github.com/Quick/Quick"
pod 'Nimble', :git => "https://github.com/Quick/Nimble"
end
我还不能编写任何测试,因为我无法通过链接器错误。有什么想法吗?
最佳答案
正如我在上面的评论中所述,我认为我遇到了相同或类似的问题:我的代码在运行时运行良好,但是当我尝试运行测试时,我在尝试实例化一个对象时遇到了段错误 11引用了 cocoa pod 中的任何东西。我已经解决了这个问题。
当我遇到错误时,我的 Podfile 看起来像这样:
pod 'ReactiveCocoa'
target 'MyTests' do
use_frameworks!
pod 'Quick'
pod 'Nimble
结束
使用框架!是罪魁祸首:因为 use_frameworks!仅适用于测试目标,我最终在为正常目标构建时静态链接到 ReactiveCocoa,并在测试目标中动态链接。我遗漏了一些仅在动态链接时才需要的 ReactiveCocoa 导入,但编译器没有告诉我它出现了段错误。
我的 Podfile 现在看起来像这样:
use_frameworks!
pod 'ReactiveCocoa'
target 'MyTests' do
pod 'Quick'
pod 'Nimble
结束
有一些链接问题需要解决,但从那里开始很容易,因为当我编译主要目标时,我遇到了正常的错误。希望这对某人有所帮助:)
关于ios - 使用 Swift 和 Obj-C 进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28435209/