Ios 使用Swift和Obj-C进行单元测试

Ios 使用Swift和Obj-C进行单元测试,ios,swift,unit-testing,cocoapods,Ios,Swift,Unit Testing,Cocoapods,我正在启动一个新的Swift项目,并尝试为其创建单元测试。我将Google分析框架添加到项目中,并链接了SystemConfiguration、CoreData、libsqlite3、libz和libGoogleAnalyticsServices 然后,我不得不手动创建一个桥接头,并添加我将立即使用的GA头。该应用程序已启动并运行,并发布到GA。然后我尝试添加一些单元测试 一旦发生这种情况,如果向测试目标添加桥接头,我会在桥接头中收到一个错误,该错误导致未找到“GAI.h”文件。我还收到编译器发

我正在启动一个新的Swift项目,并尝试为其创建单元测试。我将Google分析框架添加到项目中,并链接了SystemConfiguration、CoreData、libsqlite3、libz和libGoogleAnalyticsServices

然后,我不得不手动创建一个桥接头,并添加我将立即使用的GA头。该应用程序已启动并运行,并发布到GA。然后我尝试添加一些单元测试

一旦发生这种情况,如果向测试目标添加桥接头,我会在桥接头中收到一个错误,该错误导致未找到“GAI.h”文件。我还收到编译器发出的
分段错误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

我还无法编写任何测试,因为我无法通过链接器错误。有什么想法吗?

正如我在上面的评论中所说的,我想我遇到了相同或类似的问题:我的代码在运行时运行良好,但当我尝试运行测试时,我在尝试实例化引用cocoa pod中任何内容的对象时遇到了SEGFULT 11。我的案子已经解决了

出现错误时,我的播客文件如下所示:

pod“反应可可”

目标“我的测试”是什么

使用你的框架

吊舱“快”

吊舱灵活

结束

使用你的框架!罪魁祸首是:因为使用_框架!仅应用于测试目标,我最终在为普通目标构建时静态链接到ReactiveCocoa,并在测试目标中动态链接到ReactiveCocoa。我丢失了一些只有在动态链接时才需要的ReactiveCocoa导入,而不是编译器告诉我它出错

我的播客文件现在如下所示:

使用你的框架

pod“反应可可”

目标“我的测试”是什么

吊舱“快”

吊舱灵活

结束


有一些链接问题需要解决,但从那里很容易,因为当我编译主目标时,我得到了一些正常的错误。希望这对某人有所帮助:)

我觉得
Quick
Nimble
的顺序应该是相反的,然后是
跳过蜡烛棒
@James_andrew。你有没有想过?我遇到了完全相同的问题:我的代码运行良好,测试运行良好,只要我不实例化任何引用cocoa pod的东西:只要我引用cocoa pod,我就会在编译时得到SEGFULT 11。@Michellellis不幸的是,我的修复方法是创建一个全新的项目并重新添加我的所有文件。一旦我这样做了,我就可以用cocoapods代码再次进行测试。