问题标签 [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.
ios - 在 XCode 中开始下一个单元测试之前等待 XCTestExpectation
我有许多异步单元测试,它们使用期望可以正常工作。但是,当我运行套装中的所有测试时,它们不会等待彼此完成 - 当下一个测试开始运行时,异步回调仍处于挂起状态。我想要的是每个测试在运行之前等待上一个测试中的期望。这些测试使用共享数据库,因此让它们重叠会导致烦人的额外复杂性,并且在作为套件运行时会导致测试失败。
}
ios - 如何使用 `completionHandler` 为`downloadTask` 编写单元测试?
这是我的下载功能:
我想编写一个单元测试方法来测试它是否将文件url
从dirUrl
.
但是,没有输出“下载完成!” 或“失败......”即使我通过了单元测试,所以我猜在这个测试用例中没有调用completionHandler。
我的问题是如何让单元测试方法等到下载任务完成?
swift - 如何使用 XCTWaiter 和异常快速测试异步函数
我想在 Swift 中测试异步函数,因此如下所示,我创建了 aXCTestExpectation
并将其传递给XCTWaiter
. 现在,无论期望是否满足,我总是成功运行测试。
你能指出代码中有什么问题吗?我完全关注了一个为 Swift 3 制作的博客,但是,我正在运行 Swift 4。这是问题所在吗?
swift - 测试在应用启动时发生的 API 调用会导致多次调用来完成
我正在尝试在现有应用程序上首次实施单元测试。首先,与我在教程中看到的相反,应用程序在我尝试运行单元测试时启动。我尝试在我的测试目标上将 Host App 设置为“None”,但遇到了几个与“symbols not found”错误有关的问题。
然后,即使应用程序启动,我也一直尝试运行单元测试,但我遇到了以下错误:
'NSInternalInconsistencyException',原因:'API 违规 - 多次调用 -[XCTestExpectation 实现] 用于登录用户。'
我的猜测是我的测试登录了用户并满足了对委托的期望,但是应用程序本身在启动时正在登录用户,因此“完成”被调用了两次。
我的测试如下:
因此,我正在寻找一种解决方案,它可以让我在不运行应用程序的情况下运行测试和 API 调用,或者以某种方式避免被多次调用。
SO中有一个答案建议在使用后将“期望”设置为nil,但在我的情况下不起作用。还尝试将变量设置为弱。
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
定义为:
xctest - XCTest 将信息从应用程序(被测)发送回 XCTests
情况:
考虑一个正在使用 xcode/XCTests 测试的 ios/swift/app。该应用程序还包括一些日志记录到控制台(以及Google/Firebase/Crashlytics作为非致命异常:效果很好!)。
为此,正在使用一个自定义编写的日志记录类,它接受日志记录作为调试、信息和错误。要点:每次完成错误日志时添加一些自定义代码很容易。
问题:
当在 XCTest 期间记录错误时,我们希望将其发送到正在运行的 XCTest,以便 XCTest 可以将其视为失败。基本上这意味着我们需要一种方法将信息从被测应用发送回正在运行的 XCTest。
我们考虑过使用通知中心,但这并不适用,因为 XCTest 没有在应用程序的进程中运行。怎么可能做到这一点?
ios - 无需调用处理程序块即可满足通知的期望
在单元测试中,我期望提供给方法的通知waitForExpectation: timeout:
。最后一个没有失败,所以期望得到了满足。但是通知的处理程序有时不会被调用。我知道是因为在这种情况下不会打印处理程序开头的 NSLog。
怎么可能实现了期望,但它的处理程序还没有被调用?
swift - XCTest:检查是否未调用回调
我知道如何在 XCT 中等待带有期望的回调。但是,如何测试逆呢?
以下是我作为测试一部分的测试示例:
在我正在编写的下一个测试中,我想要一个测试以确保当我manager
的对象的状态是特定值时不会调用回调。
ios - XCTestExpectation 只是挂起
我不知道是怎么回事。我expectation
在测试中使用了一个,它不会超时。我已经删除了很多测试,现在我只剩下:
而且它不会失败。它只是挂起。有谁知道为什么会发生这种情况?