ios – 在XCTestCase子类中使用泛型有效吗?

ios – 在XCTestCase子类中使用泛型有效吗?,第1张

概述我有一个XCTestCase子类,看起来像这样.为了简洁起见,我已经删除了setup()和tearDown方法: class ViewControllerTests <T : UIViewController>: XCTestCase { var viewController : T! final func loadControllerWithNibName(string:Str 我有一个XCTestCase子类,看起来像这样.为了简洁起见,我已经删除了setup()和tearDown方法:
class VIEwControllerTests <T : UIVIEwController>: XCTestCase {    var vIEwController : T!    final func loadControllerWithNibname(string:String) {        vIEwController  = T(nibname: string,bundle: NSBundle(forClass: VIEwControllerTests.self))         if #available(iOS 9.0,*) {            vIEwController.loadVIEwIfNeeded()        } else {            vIEwController.vIEw.Alpha = 1        }    }}

它的子类看起来像这样:

class WelcomeVIEwControllerTests : VIEwControllerTests<WelcomeVIEwController> {    overrIDe func setUp() {        super.setUp()        self.loadControllerWithNibname("welcomeVIEwController")        // Put setup code here. This method is called before the invocation of each test method in the class.    }    func testname() {       let value =  self.vIEwController.firstnameTextFIEld.text        if value == "" {            XCTFail()        }    }}

在理论上,这应该按预期工作 – 编译器不会抱怨任何事情.但是只是当我运行测试用例时,setup()方法甚至没有被调用.但是,它表明当testname()方法应该失败时,测试已经过去了.

使用泛型是一个问题吗?我可以很容易地想到很多非通用的方法,但是我很想写这样的测试用例.这是XCTest在Objective-C和Swift之间的互 *** 作性?

解决方法 XCTestCase使用Objective-C运行时加载测试类并找到测试方法等.

Swift通用类与Objective-C不兼容.见https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/BuildingCocoaApps/InteractingWithObjective-CAPIs.html#//apple_ref/doc/uid/TP40014216-CH4-ID53:

When you create a Swift class that descends from an Objective-C class,the class and its members—propertIEs,methods,subscripts,and initializers—that are compatible with Objective-C are automatically available from Objective-C. This excludes Swift-only features,such as those Listed here:

Generics

Ergo您的通用XCTestCase子类不能被XCTest使用.

总结

以上是内存溢出为你收集整理的ios – 在XCTestCase子类中使用泛型有效吗?全部内容,希望文章能够帮你解决ios – 在XCTestCase子类中使用泛型有效吗?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1097697.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存