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

Jam*_*eww 6 unit-testing ios cocoapods swift

我正在开始一个新的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"
Run Code Online (Sandbox Code Playgroud)

我也在使用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
Run Code Online (Sandbox Code Playgroud)

我还没能编写任何测试,因为我无法传递链接器错误.有任何想法吗?

小智 4

正如我在上面的评论中所述,我认为我遇到了相同或类似的问题:我的代码在运行时运行良好,但是当我尝试运行测试时,在尝试实例化引用任何内容的对象时遇到了 Segfault 11可可豆荚。我已经在我的案例中解决了这个问题。

当我遇到错误时,我的 Podfile 如下所示:

pod“ReactiveCocoa”

目标“MyTests”做

使用框架!

吊舱“快”

灵活吊舱

结尾

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

我的 Podfile 现在看起来像这样:

使用框架!

pod“ReactiveCocoa”

目标“MyTests”做

吊舱“快”

灵活吊舱

结尾

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