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

ios - XCTestCase waitForExpectationsWithTimeout:handler: 当期望不满足时抛出 EXC_BAD_ACCESS

我正在使用 XCTestExpectation 测试异步调用。

当在给定的 1 秒超时之前执行 completionHandler 时,以下代码有效(测试成功)。

然而,如果没有调用completionHandler,因此期望没有实现,而不是在调用waitForExpectationsWithTimeout时得到一个测试失败,我得到一个EXC_BAD_ACCESS,这不是很方便,因为这使得不可能看到整个测试套件的结果。

我怎样才能避免这种情况并获得正常的测试失败?

0 投票
1 回答
1251 浏览

ios - 使用 PromiseKit 进行单元测试代码

我正在尝试测试Diary依赖于Network.

所以Diary代码:

和测试:

在这个Network测试中是模拟的。但是我看到的承诺链没有被执行。它卡住了。可能是因为then:在主线程上调用了块并且XCTest正在暂停它。但同时它可能应该在 5 秒后继续。可能是什么问题?

更新

看起来这与我最初的假设无关。如果我替换[self.entryCreationManagedContext save:&saveError]YES然后调试到达断点。

更新 2

托管上下文的这种特殊保存看起来像问题。它正在触发有关同步另一个托管上下文的通知。我们正在发现那里还有什么。

0 投票
1 回答
845 浏览

ios - 有没有办法将测试数据注入 XCTestCase?

我正在尝试为我正在从事的项目编写一些简单的测试用例。我有一个简单的方法,它接受输入并根据对该输入的操作结果返回真/假。基本案例单元测试对吗?在 java 中,我可以使用一个名为 TestNG 的框架,它允许我将数据注入到测试中,这样每个数据输入都将被视为一个单独的测试。我在 Objective-C 中发现的是,它模拟了类似于 JUnit 的东西,而这样的东西是不可能的。我必须做的是在设置或某处创建一个数组,然后手动循环遍历该数组以运行测试。这最终被视为 X 输入值的单一测试,而不是 X 输入值的 X 测试。

我要问的问题目前在 Objective-C 中是不可能的吗?我正在使用最新的 XCode 和 iOS8 编码。

提前致谢!——迈克尔

我的猜测是 XCTesting 框架的构建与 jUnit 完全相同,这意味着对我的问题的回答是否定的。我想我会问,以防我错了。

0 投票
2 回答
334 浏览

ios - xcodebuild 无法使用 XCTestExpectation 运行异步测试?

我有三个异步测试。在 Xcode 中测试时一切运行良好,但无法使用 xcodebuild 构建测试用例。我得到 11 个与 XCTestExpectation 相关的构建错误。

例子:

我正在使用最新的命令行工具(Xcode 6.1.1)。xcodebuild -version 正确地说明了这一点。

我正在使用以下命令运行构建

如果我注释掉异步测试及其对应项,那么一切都可以使用相同的命令完美运行。

编辑:这是一种测试方法。

0 投票
0 回答
189 浏览

objective-c - Tests get blocked when testing asynchronous network stuff with Nocilla

I'm trying to test a class that has a method responding asynchronously that makes a network call, stubbed by Nocilla.

The tests runs fine when I run the test alone. But as soon as I launch my whole test suite, it blocks here for a while and finishes with a:

Here is my test class:

Any idea what's going wrong?

0 投票
5 回答
5931 浏览

xctest - 使用 XCTest,如何将 {期望 -> 等待 } 的多个离散序列链接在一​​起?

XCTest waitForExpectationsWithTimeout:handler: 的文档指出

只有一个 -waitForExpectationsWithTimeout:handler: 可以在任何给定时间处于活动状态,但可以将多个离散序列 {期望 -> 等待} 链接在一起。

但是,我不知道如何实现这一点,也找不到任何示例。我正在研究一个类,首先需要找到所有可用的串行端口,选择正确的端口,然后连接到连接到该端口的设备。所以,我至少有两个期望,XCTestExpectation *expectationAllAvailablePorts 和 *expectationConnectedToDevice。我将如何链接这两个?

0 投票
2 回答
5993 浏览

objective-c - XCTest 在使用期望失败时通过

我正在测试一种在后台运行并在完成时执行代码块的方法。我正在使用期望来处理测试的异步执行。我写了一个简单的测试来显示行为:

XCTFail(@"fail test");测试线应该失败,但测试通过了。

我还注意到,这只发生在代码在回调上运行需要一定时间时(在我的例子中,我正在检查文件系统上的一些文件)。这就是为什么usleep(50);需要这条线来重现这个案例。

0 投票
1 回答
657 浏览

swift - 快速嵌套函数选择器进行测试

这是我的情况,也许有一种更简单的方法可以做到这一点:

我正在测试一些使用通知的东西,我不想将我的期望定义为类级别的可选变量,所以我想知道是否可以让它们成为函数的局部变量,以便通知处理程序可以访问他们。

我的尝试是将通知处理程序函数作为我的顶级测试函数中的嵌套函数 - 但我遇到了选择器命名问题,因为我不确定我需要告诉通知处理程序调用什么

所以我的代码崩溃了,因为它找不到选择器。

1)这有效吗?

2) 我将如何正确命名选择器以便可以找到它?

0 投票
1 回答
312 浏览

ios - isKindOfClass 为测试用例返回不同的值

我有一个方法someMethod。此方法在某些时候具有以下 if-else 条件。

现在,当我正常执行代码时,总是满足这个 if 条件。但是当我从我的一个测试用例中调用它时,else 部分会被执行。我以完全相同的方式调用此方法(它没有副作用等)。

当我在正常运行和测试运行中调试东西时。我看到了一些不同的东西。

在测试中运行时,userArray 有 1 个对象,(Me_Me_2 *)0x00007fa61d39dbf0. 并且在正常运行时,userArray 具有相同的对象,但有一个区别。它说(Me_Me_ *)0x00007fce71459ae0

当我打印 的值时NSStringFromClass([userArray[0] class]),它们都打印“我”。

“我”是一个 NSManagedObject。

另一个有趣的事情是,如果我在调试器中添加一个表达式并对其求值,它总是求值为 true ([((NSObject*)userArray[0]) isKindOfClass:[Me class]])-returns (bool)true。这太奇怪了!如果条件为真,为什么它会进入 else 块?

现在有些问题——

  1. 这里发生了什么事?在测试中运行时,Core Data 对象的处理方式是否不同?

  2. 为什么测试时对象的类型是“Me_Me_2”,否则是“Me_Me_”?为什么不只是“我”?

0 投票
1 回答
532 浏览

ios - 如何使用 swift 和 xctest 框架识别 JSON 对象?

使用NSJSONSerialization.JSONObjectWithData(..)我们可以创建一个 JSON 对象。但是是否可以识别对象类型,即。它是否是 JSON 对象。

我只是想检查使用 Swift 和 XCTestFramework。我尝试了不同的方法,但仍然没有解决方案?

注意:创建 JSON 对象后,我可以获取值,也可以检查值。XCTest 框架可以很好地测试这些类型的东西。但是,我坚持识别对象类型。

任何人都知道如何使用 Swift 和 XCTest 框架以编程方式识别 JSON 对象

Update:例如,对于网站测试,我们可以执行以下操作:

JSON有可能像上面那样吗?