相关疑难解决方法(0)

用Swift语言替换#ifdef

在C/C++/Objective-C中,您可以使用编译器预处理器定义宏.此外,您可以使用编译器预处理器包含/排除代码的某些部分.

#ifdef DEBUG
    // Debug-only code
#endif
Run Code Online (Sandbox Code Playgroud)

Swift中有类似的解决方案吗?

xcode preprocessor preprocessor-directive swift

697
推荐指数
15
解决办法
23万
查看次数

Xcode unittest build失败,出现错误"架构x86_64的未定义符号"

我的unittest目标构建失败,出现以下错误:

Undefined symbols for architecture x86_64:
  "_OBJC_CLASS_$_MCStore", referenced from:
      objc-class-ref in MCStoreTests.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Run Code Online (Sandbox Code Playgroud)

基本信息:

  • Xcode6.2
  • iOS8.2 SDK

我检查了什么:

  • Symbols Hidden by Default 没有
  • Other Linker Flags 是-framework XCTest
  • Framework Search Paths 是$(SDKROOT)/ Developer/Library/Frameworks $(继承)

xcode ios

44
推荐指数
5
解决办法
1万
查看次数

运行unittes时不要启动模拟器

一些背景:

我有iOS应用程序,目标配置为运行unitTests.我在我的MacBook上运行构建自动化工具jenkins,它自动构建此应用程序并运行所有测试(使用命令行xcodebuild工具).

一切都运行良好的Xcode 4.这个构建自动化工具在不同的用户下运行,并运行所有这些测试.

我最近切换到Xcode 5,它开始失败,因为它无法启动模拟器.

问题

我有一个方案UnitTests配置为运行测试(逻辑测试).AI使用以下两种方法之一运行这些测试:

  • 在Xcode中命令U.

  • 或者命令行"/ usr/bin/xcodebuild -scheme UnitTests -sdk iphonesimulator -configuration Release clean build TEST_AFTER_BUILD = YES"

在这两种情况下,它都会尝试启动模拟器.但是,根据我的理解,它并不需要它.无论如何,它运行在顶级x86上,它看起来不像在Simulator上安装任何应用程序.

有没有办法摆脱这个讨厌的模拟器启动(因为它打破了我的构建自动化)?

更新1

似乎找到了非常相似的问题,但无法使其正常工作: 在Xcode 4中运行逻辑测试而不启动模拟器

更新2

我找到了非常相关和有趣的问题/答案:Apple CI/Xcode Service和Jenkins

xcode ios jenkins

40
推荐指数
4
解决办法
2万
查看次数

如何检测iOS应用程序是否在UI测试模式下运行

我希望我的应用程序在UI测试模式下运行时运行特殊代码(例如重置其状态).我查看了从UI测试运行应用程序时设置的环境变量,并且没有任何明显的参数来区分正常运行的应用程序与UI测试中的应用程序.有没有办法找出来?

我不满意的两个解决方法是:

  1. 设置XCUIApplication.launchEnvironment一些变量,我稍后在应用程序中检查.这不好,因为您必须在setUp每个测试文件的方法中设置它.我尝试从方案设置中设置环境变量,但在运行UI测试测试时不会传播到应用程序本身.
  2. 检查环境变量是否存在__XPC_DYLD_LIBRARY_PATH.这似乎非常hacky,可能现在只能工作,因为我们如何设置目标构建设置是巧合.

ios xcode-ui-testing

39
推荐指数
4
解决办法
1万
查看次数