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

swift - 异步 URLRequest 数据任务超时

试图使以下测试正常工作。它永远不会进入完成块,而是在 30 秒后超时。该请求似乎从未提出过,因为我在查尔斯身上看不到它。

测试失败并出现以下错误:

异步等待失败:超过 30 秒的超时且未实现预期:“异步请求”

我哪里错了?

0 投票
1 回答
1276 浏览

swift - 为什么这个 Swift 单元测试在与其他测试并行运行时会崩溃?

我有一个单元测试,它在单独运行时成功,但在与其他测试一起运行时(大部分时间)崩溃。EXC_BAD_ACCESSwaitForExpectations

在此处输入图像描述 在此处输入图像描述

  • 我没有其他异步测试
  • 测试永远不会因超时而失败
  • 由于测试仅在某些时候崩溃,我预计问题是某个地方的竞争条件,但我不确定在哪里看。

我也可以用更简单的代码来重现它:


我从命令行运行了测试,发现了这条额外的信息:

其他一些答案表明这可能是由系统警报引起的。这是可以理解的,我正在使用需要权限警报的位置服务。但是,我正在运行测试的设备已经接受了权限,因此不应该显示警报。

0 投票
2 回答
1310 浏览

xcode - 如何在测试时捕获失败日志:XCTest?

使用XCTest。测试测试结果保存在路径的TestSummaries.plist中:

/Users/smriti/Library/Developer/Xcode/DerivedData/Project_name/Logs/Test/

谁能告诉如何从上面的路径读取 TestSummaries.plist 文件的内容?

需要从上述文件中捕获结果数据(错误消息、测试用例、行号)并在函数tearDown()中写入 excel

尝试使用

  1. NSSearchPathForDirectoriesInDomains(.AllLibrariesDirectory, .AllDomainsMask, true) -> 没有给出想要的路径。

  2. NSBundle.mainBundle 为“Project_name/Build/Products/”而不是“/Project_name/Logs/Test/”提供路径

0 投票
0 回答
22 浏览

xctest - XCTest 条件响应

我的应用程序是一个测验。所需的回答可以是: 1. 对问题的回答 - 5 个可能的答案 2. OK 提示“正确答案” 3. OK 提示“错误答案” 4. OK 提示“Game Level is” 5. OK 提示“Game超过”

我已经记录了响应,现在已经构建了以下内容:

回应如下:

对于 1...100 中的索引 {

我想要的是放置一个 if 语句或 switch case 语句

写作

不工作

至于开关,我不知道将比较相同类型的不同值的值应该是什么

请问有人成功做过类似的吗?

0 投票
1 回答
1330 浏览

ios - UIControl 的 sendActions 在测试目标中不起作用

我正在尝试测试何时调用UITextField发送事件特殊处理程序。editingChanged所以,为了这个目的,我通过sendActions方法模拟了这个事件。但它在测试目标中不起作用,在项目中一切正常(运行模式 - 模拟器)。

我写了一个小例子:

在这里,我想看到“测试”打印,但是在sendActions事件之后不会调用此处理程序。我也尝试过,expectation但对我没有帮助。

我究竟做错了什么?

0 投票
2 回答
809 浏览

ios - XCTestExpectation 在单元测试中的正确时间/位置完成方法调用?

考虑以下单元测试:

我在已知的失败案例中遇到了一些问题。测试成功完成,尽管数据数组中应该只有 10 个项目。

如果我把[expectation fulfill]调用放在块的底部,在XCTAssertEqual(44, data.count)方法调用之后,测试会按预期工作并失败,直到我将值更正为 10。

这是一个已知的问题?我一直无法阅读文档说我应该在最后一刻打电话给...

0 投票
1 回答
323 浏览

json - TestCase:SwiftHTTP 库没有进行 HTTP 调用

重要事实

我忘了提到问题中的一个重要因素。我在 TestCase 中运行它。我认为这个问题与 TestCase 不等待异步完成处理程序返回有关

从迁移AlamofireSwiftHTTP,因为我发现这更容易。

在 SwiftHHTP 上,无法知道生成了什么 URL,返回了什么错误。例如,我试图查看opt.debugDescription变量,它返回了一些神秘的东西,比如描述字符串"<SwiftHTTP.HTTP: 0x60000007e540>"

我遵循的步骤

  • 我已经设置YESAllow Arbitrary Loads.
  • 如果我粘贴fullurl ->http://120.0.0.1:8080/myapi/Driver/getDriver?driver=2243&domain=4345&key=asdfasdf. 即使catalina.out在我的 mac 上运行的 tomcat 服务器上也会以调试消息响应。

但是当我在 Xcode 下的测试用例中运行它时,下面的代码不会打印任何调试打印。

  • --1->、--2-->、--3-->,没有打印出来。
  • 调试器断点也不止于此。

代码

编辑

即使将代码更改为httpsor http://www.google.com,结果也相同。

编辑 1从这里 尝试@Vivek's answer。

什么都没有再次打印,错误/JSON,什么都没有。

0 投票
3 回答
3767 浏览

swift - 多个异步测试和期望

我有多个测试,每个测试都在使用给定参数测试不同结果的相同异步方法。

我发现对于异步测试,我们必须声明一个期望,等待期望,然后实现期望。这可以。每个测试单独完成时都能正常运行,但是当我尝试运行整个测试类时,一些测试通过,而另一些测试在正常运行和通过时崩溃或失败。

我在网上到处寻找“带有期望的 swift 3 多个测试”,每个解释期望的人都只有一个测试方法的例子。在同一个类中的多个方法中不可能有期望吗?

一个测试的例子如下:

据我所知,这是对期望的正确使用,每个测试都遵循相同的模式

根据 Rob 的要求,我将在此处提供一个 MCVE https://bitbucket.org/chirone/mcve_test 测试类使用模拟 API 管理器,但是当我使用真实的 API 管理器进行测试时,仍然会发生错误。

作为对代码的解释,视图模型与给定的 API 管理器通信,该 API 管理器调用服务器并将响应返回给视图模型,以便他解释错误或成功。

第一个测试测试空字段,视图模型验证而不是 APIManager。第二个测试测试用户名和密码是否错误 第三个测试测试用户名和密码是否有效

三个测试单独运行会运行良好,但是当整个文件运行时,我会收到一个 SIGABRT 错误,原因如下:

XCTAssertEqual 失败:("Optional(MCVE.LoginError.wrongCredentials)") 不等于 ("Optional(MCVE.LoginError.emptyFields)") -

*** -[XCTestExpectation 实现] 中的断言失败,/Library/Caches/com.apple.xbs/Sources/XCTest_Sim/XCTest-12124/Sources/XCTestFramework/Async/XCTestExpectation.m:101

*** 由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“API 违规 - 多次调用 -[XCTestExpectation 完成] 以测试空字段。”

SIGABRT 通常发生在第二种测试方法上,如果你点击播放,那么它在 XCTest 方法之一上失败,声称它得到的错误不是它所期望的错误。

我希望 MCVE 有助于解释我的问题。

0 投票
1 回答
530 浏览

swift - 即使元素存在,XCTKVOExpectation 也会超时

我正在使用 swift、xcode 8.3.3 和 XCTest。我正在尝试使用 XCTKVOExpectation 等待屏幕上存在的元素。即使元素存在,它也总是返回超时 (2) 的结果。

这是我的代码:

当我打印 element.exists 时,它打印为 true。但是 result.rawValue 是 2 (.timedout) 增加超时值也不能解决这个问题。

我能够成功使用 XCTNSPredicateExpectation:

想知道为什么 XCTKVOExpectation 不起作用?

0 投票
1 回答
338 浏览

semaphore - 信号量与异步 API 层测试的 iOS 单元测试中的期望有什么区别

我已经使用 semaphore 和 expect 实现了,结果是一样的。两者的根本区别是什么。

// 使用期望

// 使用信号量