问题标签 [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 投票
2 回答
2932 浏览

xctest - IOS UI 测试 - 如何编写打开相机和文件选择器的测试用例

我正在使用 XCTest 框架为 IOS 编写测试用例。我想选择一张照片来设置用户配置文件,可以通过两种方式完成: 1. 使用相机拍摄图像。2. 从文件选择器中选择图像。

我有以下问题: 1. 我在模拟器上运行这个测试。那么,如何访问摄像头呢?2.我可以通过点击“选择相册”打开页面文件选择器页面。但是,无法检测到页面文件选择器页面上的点击。

我的代码如下:

第 2 行给了我错误:NSInternalInconsistencyException 无效参数不满足

没有找到上述案例的单一文档。

0 投票
2 回答
648 浏览

cucumber - XCUItest 系统警报

我正在尝试使用 XCUITest 和 Cucumberish 自动化我的应用程序,我无法单击系统警报,例如位置和联系人权限,但无法单击“允许”或“确定”,它正在单击“不允许”或“任意”“允许”。

这是我试图在我的步骤定义中使用的代码:

0 投票
1 回答
1228 浏览

ios - IOS UI 测试 - 等待网络调用

我正在使用 XCTest 框架为 IOS 编写测试用例。一旦网络调用完成,我们如何等待网络调用并开始执行。目前,我正在使用 sleep() 等待。但是,它不是最好的方法。
那么,还有其他方法可以做到吗?

0 投票
1 回答
294 浏览

ios - 将 XCTests measure() 限制为仅运行一次

作为我正在编写的UI测试的一部分,我想测量一个功能的性能。测试本身需要一段时间,而且我要测量的部分很小,而且测试运行的频率足够高,每次运行只需进行一次测量即可获得所需的数据。但是, XCTestCasemeasure(_:)将运行 10 次。

是否有任何选项我可以给它或measureMetrics(_:automaticallyStartMeasuring:for:)只运行一次测量,或者有什么方法让我自己进行测量并将其反馈到测试运行器中,以便它像 Xcode 那样集成measure(_:)

0 投票
0 回答
573 浏览

ios - 如何在 iOS 中从 XCTestCase 文件中访问联系人

我正在尝试通过 UITest 文件在设备联系人库中添加联系人。我在 plist 中添加了隐私使用说明。但它仍然抛出以下错误:

我正在使用以下代码添加联系人:

从开发目标执行时,相同的代码成功地创建了一个联系人。

0 投票
0 回答
261 浏览

ios - EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0) 尝试使用 SBTUITestTunnel 运行 XCTest

我正在尝试在我的 XCTest UI 自动化中使用测试框架SBTUITestTunnel 。我按照描述设置了 Podfile:

但是,当我运行 UI 测试时,它们在启动后立即崩溃:

谁能帮我调试一下?我什至不能设置断点,所以我很茫然。请记住我的代码构建并开始执行。我猜我的 Podfile 或我的项目配置有问题。我尝试了他们对未找到框架的建议,但没有帮助:

如果您使用的是 CocoaPods v1.0 并且您的 UI 测试无法启动,您可能需要在 UI 测试目标的构建设置中将 $(FRAMEWORK_SEARCH_PATHS) 添加到您的运行路径搜索路径!

0 投票
1 回答
290 浏览

ios - 手动将 UIView 实例化为模拟 UIViewController 后,为什么 UIView 为零?

我正在UiViewController用 XCUnitTests 测试我的 s。

有时我必须模拟UIViewController以捕获方法调用。例如是否performSegue已被调用。

有时我测试的一种方法(例如viewDidLoad)访问 IBOutlet。当我创建一个自定义模拟子类然后说mockViewController.textfield = UITextField()一切都很好。

但是,当我想手动实例化 aUIView或 aUIStackView时,变量仍然是 nil,即使 a 的初始化UIView程序永远不会返回 nil。为什么?

也许这与UIViews 和UIStackViews 没有内在内容大小有关?我该如何解决?

0 投票
1 回答
1084 浏览

macos - 测试目标中资产目录中的 NSImage

我的单元测试目标需要加载图像资源以用于某些测试,但我无法加载它。

  1. 我在测试目标中创建了一个资产目录。
  2. 我在目录中添加了一个新的图像集资源,选中了“设备”中的“Mac”框,并将其源图像设置为两种分辨率(@1x 和@2x):

在此处输入图像描述

  1. 我已经检查了测试目标的“复制捆绑资源”构建阶段,它确实包括资产目录。

  2. 我检查了资产目录和图像集的目标成员资格,它确实是测试目标。


运行测试时,我尝试使用如下代码加载图像:

......但是守卫失败了。

我也试过:

...但第一个守卫失败(无法检索资源路径)。

这两种格式我都试过了

和:

我也试过Bundle.urlForImageResource(_)了,但也失败了。


我见过类似的问题和答案,但它们要么适用于iOS ,要么适用于应用程序(主)包中的资源。

我错过了什么?


更新:

同时,我通过将测试图像添加为独立图像资源(使用资产目录)并使用以下代码加载它来解决该问题:

在这种情况下,我不需要支持多种分辨率(我的图像是图像处理算法的来源;它已经被假定为必要的最高分辨率),即使我这样做了,我也会从.png切换到.tiff,我猜。

问题似乎是,NSImage没有类似于's的初始化程序,它允许您指定从中加载图像的包(第二个参数)。UIImageinit(named:in:compatibleWith:)

您可以改为要求特定的包(除了main)来创建资源 URL 并从中实例化图像(就像我在上面所做的那样),但这似乎与资产目录不兼容。欢迎提供更多信息...

0 投票
0 回答
145 浏览

xctest - Xctest 如何在套装完成之前知道测试用例通过/失败,以便我可以在测试完成时更新测试周期

覆盖 func setUp() { super.setUp()

XCTestObservationCenter.shared.addTestObserver(观察者)

下面是观察者类,但没有任何东西是打印的

我希望每个测试用例的测试用例 id 和状态完成运行,以便我将更新 Jira 或 Zephyr 中的状态

类观察者:NSObject,XCTestObservation { var failedTC = 0

}

0 投票
0 回答
299 浏览

swift - XCTest 元素查询计数返回不正确的单元格数

使用 Xcode 9、Swift、XCUI 测试

我正在尝试测试显示在表格中的结果数量,但是当第二组/页面结果加载到表格中时,返回的单元格数量/计数不正确。

表格中每页有 50 个单元格。加载最后一个单元格时,如果有更多,则加载下一组 50 个(或最多 50 个)。

在我的测试用例中,我们导航到页面并加载了前 50 个单元格。当我调用 .count 单元格时,由于某种原因,它正在调用 api 以两次返回结果的第二页。第 2 页包含 20 个结果。结束计数应为 70(第一页为 50,第二页为 20),但计数返回为 90,因为它两次调用结果的第二页。

它两次调用最后一个单元格willDisplayCelltableViewController

为什么 .count 方法会使这种情况发生两次,从而导致单元格计数不正确?还有另一种方法可以在我们的 UI 测试中获得正确的单元格计数吗?