【问题标题】:Spontaneous failures running Kiwi-based tests on an iOS app when using Realm使用 Realm 在 iOS 应用程序上运行基于 Kiwi 的测试时自发失败
【发布时间】:2015-05-20 22:21:11
【问题描述】:

我正在开发一个应用,它有一个包含 300 多个测试的 Kiwi 测试套件。测试作为应用程序测试运行,其中主应用程序目标是测试包的主机。

我正在尝试将 Realm 添加到应用程序,但是当我将 Realm 对象编译到应用程序目标中时,由于未能创建 Kiwi 匹配器,我的测试自发失败。我注意到只有当我的 RLMObject 子类具有 RLMArray 属性时才会发生这种情况。删除它们可以解决问题。

控制台日志中的失败原因各不相同,但常见的有:

[FAILED], could not create matcher for -receiveMessagePattern:countType:count:
[FAILED], could not create matcher for -receive:withCountAtLeast

我最喜欢的:

[FAILED], (null)

还有其他人遇到过这个问题吗?

【问题讨论】:

  • 原来我在模型中使用了无效的数据类型,异常被 Kiwi 吞没了。哎呀!

标签: ios objective-c unit-testing realm kiwi


【解决方案1】:

事实证明,RLMObject 子类中不允许使用无符号整数类型和NSNumber 属性——我拥有这两种类型,并且它在单元测试套件开始时抛出异常。在单元测试期间(至少在使用 Kiwi 时)会吞下异常,所以我一开始没有注意到这一点。修复属性类型解决了我的问题,但我仍然不确定为什么它会导致所有其余测试失败。异常之后运行时可能处于错误状态。

【讨论】:

  • 你确定是 Kiwi 吗?看来你的代码曾经有问题。
  • 是的,我同意。这是我自己的代码。请阅读我的回答 - 我在我的 RLMObject 子类中使用了无效的数据类型,这些数据类型导致了通过所有测试传播的异常。
  • 然后请举一些例子,让更多的读者明白什么是不应该做的。另外,您有点责怪 Kiwi 掩盖了异常。
  • 抱歉,我并不是要暗示 Kiwi 有错。我没有注意到异常是我的疏忽。不过,我不知道为什么它会导致每次后续测试的所有匹配器创建都失败,所以我只能说在运行测试时设置一个异常断点,以确保您不会忽略引发的异常。
  • 我还编辑了我的答案,希望能更清楚,而不是直接指责 Kiwi。感谢您指出这一点!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多