相关疑难解决方法(0)

如何让应用知道它的运行单元是否在纯Swift项目中测试?

在XCode 6.1中运行测试时,一个令人讨厌的事情是整个应用程序必须运行并启动其storyboard和root viewController.在我的应用程序中,它运行一些获取API数据的服务器调用.但是,我不希望应用程序在运行其测试时执行此操作.

随着预处理器宏的消失,对于我的项目来说最好的是要知道它是在运行测试而不是普通的启动时启动的吗?我用CMD + U和机器人正常运行它们.

伪代码将是:

// Appdelegate.swift

if runningTests() {
   return
} else {
   // do ordinary api calls
}
Run Code Online (Sandbox Code Playgroud)

xcode ios xctest swift

68
推荐指数
11
解决办法
2万
查看次数

XCode 5单元测试:启动我的应用程序

当我在XCode 5中运行我的测试时,我的OS X应用程序的主窗口在运行测试时会在屏幕上显示几秒钟.为什么?即使我取消注释我的所有测试,它仍会打开我的主窗口.

xcode objective-c xcode5 xctest

32
推荐指数
3
解决办法
2万
查看次数

在不启动模拟器的情况下在Xcode 4中运行逻辑测试

我想在不启动模拟器的情况下使用OCUnit在Xcode 4中运行测试.请不要试图说服我,我正在进行单元测试错误或类似的事情.我喜欢用传统方式做TDD:在测试中为类编写API,然后让类通过测试.我将编写在模拟器中运行的端到端的单独测试.

如果没有办法做到这一点,那么请有人告诉我如何让测试工具不实例化整个应用程序?我的应用程序是事件驱动的,当它启动我的测试时,它会发送一堆事件.

tdd xcode objective-c ocunit ios-simulator

28
推荐指数
3
解决办法
8480
查看次数

Apple CI/Xcode服务和Jenkins

有没有一种方法/插件可以将新的Xcode服务和/或新的Apple CI与Jenkins集成?

为什么?

让Jenkins服务器+ OSX构建从属连接的主要问题ssh单元测试不起作用,因为iOS模拟器需要一个在此配置中不存在的图形环境.

我希望可以将Xcode服务(支持单元测试)与Jenkins集成.

可能是使用Apple CI就足以满足我的需求,但这个问题的目的是将Xcode服务与Jenkins集成.

我已经知道的了

我对现有的Xcode Jenkins插件有经验,但似乎不支持全新的Xcode服务或新的Apple CI.我特别热衷于通过CI进行单元测试(使用旧方式在ssh会话中无法正常工作).

我想知道什么

我想了解以下与Jenkins和ssh连接的构建奴隶无关的问题的信息:

  • 单元测试无头系统
  • 弗兰克或类似的验收测试
  • 自动配置配置文件更新(Apple CI执行此操作)

关于目前与Jenkins和ssh连接的构建从站一起工作的事情的信息仍然应该与Xcode服务集成一起工作:

  • 构建不同的构建配置(Release,Debug,TestFlight)/ scheme
  • 自动构建数量增量
    • (使用Jenkins,我可以将项目中的内部版本号设置为${BUILD_NUMBER},并且Jenkins根据其内部版本号设置此环境变量.当Apple CI执行构建时,很可能会设置内部版本号.)
    • 处理/同步Jenkins和Apple CI之间的内部版本号
  • 从不同的Jenkins Jobs访问Apple CI的构建产品
    • 例如,要将作业上传到TestFlight
  • 备份构建
  • 自动构建git push到特定分支
  • 邮件通知

一些额外的问题/提示

  • 我不确定Apple CI == Xcode serviceApple CI 是否只使用 Xcode服务.在后一种情况下,Xcode服务就像一个智能构建从属服务器,Jenkins可能会使用它来进行构建和测试,但是自己管理构建数量和产品.
  • 我知道Apple CI是一个单独的CI,并且将几个CI相互集成并不是最简单或最有用的方法.我只是担心Apple CI对我的需求不够灵活(见上文),并且与Jenkins的旧方式存在一些问题(见上文).

macos xcode continuous-integration ios jenkins

28
推荐指数
2
解决办法
1万
查看次数

以编程方式确定iOS项目中的当前目标(运行或测试)

有没有办法以编程方式确定在开发iOS应用程序时是否在测试目标中运行代码与常规运行目标?

我有检查这个变量是否为零的黑客,因为它只在我的测试目标中,但这看起来非常h​​acky.

[[[NSProcessInfo processInfo] environment] objectForKey:@"XCInjectBundle"]
Run Code Online (Sandbox Code Playgroud)

testing ios

16
推荐指数
2
解决办法
1万
查看次数

有没有办法在 Xcode 中运行单元测试而无需构建和启动模拟器?

我正处于开发 iOS 应用程序的早期阶段,现在,我只想测试我的 Swift 代码的逻辑。我还不关心实际的应用程序。我在测试文件中编写了一些单元测试,但每当我运行测试套件时,它都会启动以 iPod Touch 作为目标设备的模拟器,尽管它目前与我的测试无关。有没有办法禁用它?

我尝试转到“项目”>“常规”并将主机应用程序设置为“无”进行测试,但它似乎没有执行任何操作。我不知道这是否相关,但我还在Product > Scheme > Edit Scheme下关闭了 AuthenticationUITests 。

是我能遇到的关于这个主题的最相关的帖子,但它似乎已经过时了,因为我在那个地方找不到捆绑加载器和测试主机。

我也尝试按照这篇文章使用 xctool,但是当我尝试时brew install xctool,它说:

Warning: xctool has been deprecated because it has an archived upstream repository!
Error: xctool: no bottle available!
Run Code Online (Sandbox Code Playgroud)

xcode unit-testing ios

5
推荐指数
0
解决办法
667
查看次数