如果是Swift中的生产代码或测试代码,则在运行时检测

时间:2017-05-24 16:41:47

标签: ios swift

在运行时检测代码是运行测试还是生产应用程序的最佳方法是什么。

基本上我想允许一个setter只是为了测试目的。类似的东西:

class LoginService {

    private static var LoginService instance = LoginService();

    public var sharedInstance: LoginService {
          get{
              return instance;
          }

          set{
             if(inRunningTests()){
                 instance = newValue;
             } else {
                 fatalError("This setter is just for testing")
             } 
          }
    }        
    static func isRunningTests() -> Bool {
         // ????
    }

}

2 个答案:

答案 0 :(得分:1)

我的工作解决方案

static var isRunningTests : Bool {
    get {
        return NSClassFromString("XCTest") != nil;
    }
}

答案 1 :(得分:1)

对于您可以使用的单元测试;

func isTesting() -> Bool {
    if ProcessInfo.processInfo.environment["XCTestConfigurationFilePath"] == nil {
        return false
    }
    return true
}