【问题标题】:Xcode Other Swift Flags not recognized in codeXcode 代码中无法识别的其他 Swift 标志
【发布时间】:2017-08-31 03:58:44
【问题描述】:

我有一个 Swift 项目,我向它添加了一个单元测试目标。 我的配置文件 Constants.swift 包含一个结构:

struct Constants {
  struct Network {
    #if APITESTS
    static let serverURL = "https://www.servertest.com"
    #else
    static let serverURL = "https://www.server.com"
    #endif
  }
}

在我的测试目标Other Swift Flags 我添加了-DAITESTS 然后用 CMD+U 运行单元测试 在我的测试中出现的日志中,我可以看到它是“https://www.server.com”,而它应该是 servertest。

如果我使用#if DEBUG 而不是 APITESTS,它可以工作。 如果我尝试在 Active Compilation Conditions 中添加 APITESTS(就像 DEBUG 一样),它仍然无法识别。

有什么明确的解释吗?

【问题讨论】:

  • 我已经尝试过了,正如您在帖子中看到的那样
  • 我刚才做了一个测试:我把APITESTS标志放在PROJECT config > Active Compilation Conditions中。它有效。如果我将标志放在单元测试目标中,它就不起作用

标签: swift xcode


【解决方案1】:

当你在测试目标中定义一个条件时,它只影响测试;主应用程序是根据其通常的配置构建的。我在这里看到的两个简单的解决方案是设置一个环境变量或在主应用程序中定义一个特殊的测试配置,并将方案设置为使用该配置进行测试。

【讨论】:

  • 现在让我检查一下@kevin,但这似乎更合乎逻辑。我不知道编译标志只影响测试编译。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-17
相关资源
最近更新 更多