在运行UI测试时,即使添加@objcMembers标记,也无法从objc访问swift对象的功能

时间:2018-12-16 16:24:47

标签: objective-c swift xcode-ui-testing

我最近正在为iOS应用开发UI测试代码, 我的UI测试代码使用的是swift,但是项目本身有一些Objective-C代码,并且我为启动参数设置创建了一个singleton对象,该对象也由swift编写,因此我在类中添加了@objcMembers标记。

但是在运行UI测试代码时,似乎无法访问变量和函数,单例本身也不存在吗? 我错过了什么?

import UIKit

#if DEBUG

@objcMembers
class EALaunchArugments: NSObject {

static let sharedInstance = EALaunchArugments()

// key for property
static private let UITestingKey = "-UITesting"

var isUITesting: Bool {
    let value = self.getLaunchArgumentValue(key: EALaunchArugments.UITestingKey)
    return Bool(value ?? "") ?? false
}

private func getLaunchArgumentValue(key: String) -> String? {
    let arguments = ProcessInfo.processInfo.arguments
    let indexOfKey = arguments.firstIndex(of: key)

    guard let index = indexOfKey, index != NSNotFound else {
        return nil
    }

    guard index + 1 >= arguments.count else {
        return nil
    }

    return arguments[index + 1]
}

func setAllLaunchArgumentsSettingsForUITesting() {
// some work

}
}

#endif

0 个答案:

没有答案