问题标签 [xctestcase]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
21158 浏览

ios - 如何在执行任何 XCTest 之前运行一次性设置代码

我有以下问题。我想在执行所有测试类之前执行一段代码。例如:我不希望我的游戏在执行过程中使用 SoundEngine 单例,而是使用 SilentSoundEngine。我想激活 SilentSoundEngine 一次而不是在所有测试中。我所有的测试都是这样的:

-编辑- 大多数答案都针对为 TestCase 提供自定义超类。我正在寻找一种更通用、更简洁的方法来提供所有测试都需要执行的环境。是否有“主要”功能/ Appdelegate 之类的功能用于测试?

0 投票
2 回答
2780 浏览

ios - XCTestCase - iOS UI 测试 - 处理具有许多单元格的 UITableViews

我正在试验(Xcode 7)UI XCTestCase 测试用例,我偶然发现了一个 UIView 的问题,其中我有一个包含许多单元格(4000+)的 UITableView。

应用正常运行时,只渲染可见单元格,完全没有性能问题。但是,如果我在录制 XCTestCase 的上下文中运行应用程序并导航到此屏幕,则模拟器会冻结,显然是因为每个单元格都呈现为好像它是可见的。如果我尝试手动编写导航脚本并运行 XCTestCase,则测试用例在导航到此屏幕后立即失败,并以“UI 测试失败 - 无法获得刷新的快照”退出,显然又是因为所有单元格都在被渲染而这没有及时完成。

我认为这与测试框架构建了显示屏幕的整个元模型有关,将 4000 多个单元格中的每一个都添加到视图树层次结构中。

我尝试添加一个期望,希望这会给测试容器足够的时间来完成渲染所有单元格,但这不起作用。

有解决方法吗?是否有可能跳过构建 UI 树层次结构的一部分或其他什么?我的目标是能够为此屏幕编写 UI 测试。

0 投票
0 回答
440 浏览

ios - 如何在调用 completionHandler 块之前使测试崩溃的异步 XCTestCase 失败?

我正在使用 XCTestCase 进行 iOS 单元测试,并且由于异步 Web 服务处理程序上的“无法识别的选择器”而崩溃,该处理程序通过 completionHandler 块返回操纵的 NSDictionary。

崩溃不是我对断言语句(XCTAssertNoThrows)的期望,我想看到由于崩溃而导致的断言失败,但是我编写的测试方法停止执行并且没有任何测试结果(通过/失败)结束。

不幸的是,服务处理程序代码没有被隔离来进行适当的单元测试。由于它不是孤立的,@try...@catch 没有捕获 NSInvalidArgumentException 并且它是无用的。很可能,我想实现顶级 NSSetUncaughtExceptionHandler,但我不知道如何使来自 NSSetUncaughtExceptionHandler 的相关测试失败。

0 投票
2 回答
8648 浏览

ios - XCTestCase:等待应用空闲

我的 UI 测试失败,因为测试无休止地等待,直到应用程序空闲。我看不到背景中有任何事情发生,例如加载微调器。

它只出现在一个选项卡上。所有其他选项卡都是可点击的,但在屏幕 3 上测试失败。II 在屏幕 3 上捕获测试后单击另一个选项卡,测试继续并成功完成。

有任何想法吗?

0 投票
1 回答
1297 浏览

ios - XCTest 与自定义 UICollectionViewCell

我无法让 UI 测试记录自定义 UICollectionViewCell 选择。

怎么做?是否支持?

下面是我点击第一个单元格时自动生成的代码。

我也在设置这些属性:

在 cellForItemAtIndexPath 中

在我的 TestFile.m

如果您需要更多信息,请告诉我。:)

0 投票
2 回答
947 浏览

ios - ld:找不到架构 i386 的框架

我正在尝试在我的框架中测试一个方法,并且我编写了一个简单的测试用例。但它无法执行,xcode 给了我错误:

我仔细检查了框架是否已添加到嵌入式二进制文件以及构建阶段部分。

这是我的测试文件:

当我取消注释上述两行时,我得到了未找到框架的错误。

我也尝试了以下方法:

  • 该框架已添加到嵌入式二进制框架部分。
  • Embedded contains swift code设置为YES,因为框架包含 swift 代码。
  • 打包部分中的可执行前缀为空。(它没有设置为@executable_path/Frameworks)
  • 链接中的运行路径搜索路径设置为

    $(inherited) @executable_path/Frameworks @loader_path/Frameworks

  • 我也尝试清理项目并重新启动 xcode,并构建框架。

  • 删除了派生数据。

我不确定可能是什么问题。有任何想法吗?

0 投票
1 回答
911 浏览

uiswitch - 如何将expectationForPredicate 与XCUIElementQuery UISwitch 一起使用

如何编写等待 UISwitch 启用的 UI 测试 (XCTestCase)。

我将此代码添加到我的一项测试中,但它超时了:

0 投票
4 回答
3435 浏览

ios - 如何更改 XCTest for iOS 上的测试方向?

我正在尝试在不同方向使用 XCTestCase 测试我的 iOS 应用程序。我需要一种以编程方式改变方向的方法。我尝试在 2 种方法中执行此操作,但都没有改变方向(方向保持为 UIInterfaceOrientationPortrait)。

尝试 1

尝试 2

当我阅读 [[UIApplication sharedApplication] statusBarOrientation] 是否有另一种方法可以更改方向以进行测试?

0 投票
2 回答
1128 浏览

ios - 开关盒上的 iOS 单元测试

我是单元测试的初学者,我想在 switch 中测试我的案例,但我不知道该怎么做。

我有 :

在我的 ViewController 中:

当然,我不想修改我的 ViewController。

有任何想法吗 ?泰

0 投票
1 回答
497 浏览

swift - keyValueObservingExpectationForObject handler block not called

I have a testing case in Swift trying to wait for a property change:

Why testKeyValueObservingExpectationForObject handler block is never called?

enter image description here