问题标签 [xctestexpectation]

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 回答
1752 浏览

ios - 在 XCode 中开始下一个单元测试之前等待 XCTestExpectation

我有许多异步单元测试,它们使用期望可以正常工作。但是,当我运行套装中的所有测试时,它们不会等待彼此完成 - 当下一个测试开始运行时,异步回调仍处于挂起状态。我想要的是每个测试在运行之前等待上一个测试中的期望。这些测试使用共享数据库,因此让它们重叠会导致烦人的额外复杂性,并且在作为套件运行时会导致测试失败。

}

0 投票
1 回答
1069 浏览

ios - 如何使用 `completionHandler` 为`downloadTask` 编写单元测试?

这是我的下载功能:

我想编写一个单元测试方法来测试它是否将文件urldirUrl.

但是,没有输出“下载完成!” 或“失败......”即使我通过了单元测试,所以我猜在这个测试用例中没有调用completionHandler。

我的问题是如何让单元测试方法等到下载任务完成?

0 投票
1 回答
2686 浏览

swift - 如何使用 XCTWaiter 和异常快速测试异步函数

我想在 Swift 中测试异步函数,因此如下所示,我创建了 aXCTestExpectation并将其传递给XCTWaiter. 现在,无论期望是否满足,我总是成功运行测试

你能指出代码中有什么问题吗?我完全关注了一个为 Swift 3 制作的博客,但是,我正在运行 Swift 4。这是问题所在吗?

0 投票
1 回答
48 浏览

swift - 测试在应用启动时发生的 API 调用会导致多次调用来完成

我正在尝试在现有应用程序上首次实施单元测试。首先,与我在教程中看到的相反,应用程序在我尝试运行单元测试时启动。我尝试在我的测试目标上将 Host App 设置为“None”,但遇到了几个与“symbols not found”错误有关的问题。

然后,即使应用程序启动,我也一直尝试运行单元测试,但我遇到了以下错误:

'NSInternalInconsistencyException',原因:'API 违规 - 多次调用 -[XCTestExpectation 实现] 用于登录用户。'

我的猜测是我的测试登录了用户并满足了对委托的期望,但是应用程序本身在启动时正在登录用户,因此“完成”被调用了两次。

我的测试如下:

因此,我正在寻找一种解决方案,它可以让我在不运行应用程序的情况下运行测试和 API 调用,或者以某种方式避免被多次调用。

SO中有一个答案建议在使用后将“期望”设置为nil,但在我的情况下不起作用。还尝试将变量设置为弱。

0 投票
0 回答
422 浏览

ios - iOS 测试套件在运行 xctest.xctwaiter 后崩溃

现在 xcode 9 和 xcode10 已经发生了这种情况,使用 Quick 和 XCTest 进行单元测试,它们将一直运行良好,但最后会引发异常/崩溃。如果我继续,测试将成功。

在此处输入图像描述

我花了很多时间试图解决这个问题,但没有运气。我在日志或堆栈跟踪中看不到任何有用的信息。这是一个包含 2,000 多个测试的大型代码库,因此很难确定它是否只是其中一个原因。我试过了:

  • 从测试目标中删除所有文件,逐个添加,在某些时候它会再次中断,但现在回到以前的 OK 版本开始失败。
  • 从 Quick 和 XCTest 中删除所有异步测试
  • 删除所有 XCTEst 案例,看看这是否是两个目标中的问题。
0 投票
0 回答
126 浏览

xctest - XCTest 完成处理程序断言保留周期

我一直在使用该XCTest框架编写 Xcode 测试,主要是使用以下格式的完成处理程序对服务的 getter 进行异步测试,没有任何问题:

今天突然间,我开始编写以下格式的第一个异步 setter 测试,但XCTAssert...()在块内的语句中收到警告:

在此块中强烈捕获“自我”可能会导致保留周期

我什至不遗余力地注释掉它的全部内容setSomething: onCompletion:,使其不做任何事情,清理和重建,但警告仍然存在。

我不明白self它指的是什么,因为块内唯一发生的事情是XCTAssert...()and [XCTestExpectation fulfill]。此外,我不明白为什么我为第一种格式编写的 30 多个测试中没有一个没有与之相关的警告,但我为第二种格式编写的所有 5 多个测试都有。

任何关于这里发生的事情以及我如何解决它的解释将不胜感激。

(使用 Xcode 10.0)

编辑1:

问题似乎与方法名称有关,setSomething: onCompletion:. 将其更改为其他任何内容,例如doSomething: onCompletion:删除警告。我仍然不知道Xcode如何/为什么以set显示警告的方式解释命令,因此任何信息都将不胜感激。

编辑2:

以下是 和 的方法setSomething签名doSomething

其中SetSomethingCompletionHandler定义为:

0 投票
1 回答
70 浏览

xctest - XCTest 将信息从应用程序(被测)发送回 XCTests

情况:

考虑一个正在使用 xcode/XCTests 测试的 ios/swift/app。该应用程序还包括一些日志记录到控制台(以及Google/Firebase/Crashlytics作为非致命异常:效果很好!)。

为此,正在使用一个自定义编写的日志记录类,它接受日志记录作为调试、信息和错误。要点:每次完成错误日志时添加一些自定义代码很容易。

问题:

当在 XCTest 期间记录错误时,我们希望将其发送到正在运行的 XCTest,以便 XCTest 可以将其视为失败。基本上这意味着我们需要一种方法将信息从被测应用发送回正在运行的 XCTest。

我们考虑过使用通知中心,但这并不适用,因为 XCTest 没有在应用程序的进程中运行。怎么可能做到这一点?

0 投票
0 回答
79 浏览

ios - 无需调用处理程序块即可满足通知的期望

在单元测试中,我期望提供给方法的通知waitForExpectation: timeout:。最后一个没有失败,所以期望得到了满足。但是通知的处理程序有时不会被调用。我知道是因为在这种情况下不会打印处理程序开头的 NSLog。

怎么可能实现了期望,但它的处理程序还没有被调用?

0 投票
1 回答
635 浏览

swift - XCTest:检查是否未调用回调

我知道如何在 XCT 中等待带有期望的回调。但是,如何测试逆呢?

以下是我作为测试一部分的测试示例:

在我正在编写的下一个测试中,我想要一个测试以确保当我manager的对象的状态是特定值时不会调用回调。

0 投票
1 回答
93 浏览

ios - XCTestExpectation 只是挂起

我不知道是怎么回事。我expectation在测试中使用了一个,它不会超时。我已经删除了很多测试,现在我只剩下:

而且它不会失败。它只是挂起。有谁知道为什么会发生这种情况?