我正在开始一个新的Swift项目,并且我正在尝试为它创建单元测试。我将Google Analytics框架添加到项目中,并链接了SystemConfiguration,CoreData,libsqlite3,libz和libGoogleAnalyticsServices。
然后,我必须手动创建一个桥接标头,并添加我将立即使用的GA标头。该应用程序启动并运行并发布到GA。然后我尝试添加一些单元测试。
一旦发生这种情况,如果我向其添加桥接标头,我会在测试目标中收到'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
我还没有能够编写任何测试,因为我无法通过链接器错误。有什么想法吗?
答案 0 :(得分:4)
正如我在上面的评论中所述,我认为我遇到了相同或类似的问题:我的代码在运行时运行良好,但是当我尝试运行测试时,我试图实例化一个对象时遇到了Segfault 11引用了可可豆荚中的任何东西。我已经解决了这个问题。
当我遇到错误时,我的Podfile看起来像这样:
pod'ReactiveCocoa'
目标'MyTests'做
use_frameworks!
pod'Quick'
pod'Nimble
端
use_frameworks!是罪魁祸首:因为use_frameworks!只应用于测试目标,我在构建正常目标时静态链接到ReactiveCocoa,并在测试目标中动态链接。我错过了一些只在动态链接时才需要的ReactiveCocoa导入,而不是编译器告诉我它已经发生了分段。
我的Podfile现在看起来像这样:
use_frameworks!
pod'ReactiveCocoa'
目标'MyTests'做
pod'Quick'
pod'Nimble
端
有一些链接问题需要解决,但是从那里开始很简单,因为当我编译主要目标时,我得到了明智的错误。希望这有助于某人:)