rob*_*ble 5 ios xctest typhoon swift xcode6-beta5
我正在使用Swift与Typhoon和Cocoapods.一切顺利,直到我开始为我的Typhoon组件编写Integrationtest(根据Typhoon-Example-App测试).我想以与我在TyphoonFactory
中的setUp()
方式相同的方式设置Test 方法AppDelegate
.当我执行测试时,我总是得到一个
TyphoonBlockComponentFactory assertIsAssembly:] + 244:错误:MyApp.MyAssembly不是TyphoonAssembly的子类
Typhoon引发的错误(使用kindOfClass
引擎盖下的方法.)相同的代码完美地工作AppDelegate
,我无法弄清楚什么是错的.
为了验证这种行为,我实现了isKindOfClass
检查booth类(参见下面的代码):
有人可以帮助我吗?多谢!
PodFile
inhibit_all_warnings!
target "MyApp" do
pod 'Typhoon', '2.1.0'
end
target "MyAppTests" do
pod 'Typhoon', '2.1.0'
end
Run Code Online (Sandbox Code Playgroud)
MyAssembly.swift
public class MyAssembly : TyphoonAssembly{
//Some definitions
}
Run Code Online (Sandbox Code Playgroud)
AppDelegate.swift
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary?) -> Bool {
…
var assembly : MyAssembly = MyAssembly()
//Always returns „true“
println("Is type of class: \(assembly.isKindOfClass(TyphoonAssembly))")
…
}
Run Code Online (Sandbox Code Playgroud)
MyComponentTest.swift
import XCTest
import MyApp
class MyComponentTest: XCTestCase {
override func setUp() {
super.setup()
var assembly : MyAssembly = MyAssembly()
//Always returns „false“!
println("Is type of class: \(assembly.isKindOfClass(TyphoonAssembly))")
//Error is thrown „MyApp.MyAssembly is not a sub-class of TyphoonAssembly“
var factory : TyphoonComponentFactory = TyphoonBlockComponentFactory(assembly: assembly) as TyphoonComponentFactory
}
}
Run Code Online (Sandbox Code Playgroud)
为了其他用户的利益:
正如Typhoon的Github所讨论的那样,当Typhoon CocoaPod同时包含在app目标和测试目标中时,会出现此错误.
由于应用程序样式测试(设置了TEST_HOST标志)现在几乎无处不在,因此测试目标会自动从主应用程序目标继承依赖关系.对于Swift,使用名称间距,如果它们在测试目标中重复,则事情可能会中断.
因此,解决方案是从测试目标中删除Typhoon以及应用程序的任何其他依赖项,因为这些是继承的.您仍然可以包含特定于测试的依赖项,如下所示:
target :tests, :exclusive => true do
pod 'OCMockito'
pod 'AnotherTestLibrary' #etc . .
end
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
629 次 |
最近记录: |