2

我希望 Realm 团队的某个人看到并回答了这个问题

我有一个使用 Cedar 编写 BDD 样式测试的项目。我有一个包含 Objective C 和 Swift 文件的混合项目。其中一些 swift 文件用于自定义 Realm 模型。我使用 CocoaPods 将 Realm 安装到我的项目中。

到目前为止,我看到的推荐设置如下:

  1. 在PodfileRealm/Headers中用于测试目标并仅Realm用于主要目标 - 这解决了+[RLMObjectBase ignoredProperties]: unrecognized selector sent to class错误。

我的应用程序构建并运行,但现在我明白了RLMObject subclasses with the same name cannot be included twice in the same target

如果我从所有测试目标中删除 swift 对象并将它们仅保留在主要目标上,那么现在我无法在测试文件中看到它们,这导致我进入下一点

  1. 在您的 swift 文件中使用 @testable。如果您使用 swift XCTest 类进行测试,这是一个很好的建议,但它不适用于 Cedar(或者我不知道如何使其工作)

所以我的问题是,有什么办法可以使这个设置工作吗?确切的步骤是什么?

4

1 回答 1

1

在等待回复的同时,我设法在这位绅士的文中找到了答案:)

  1. 确保您的所有 .swift 文件都将 Target Membership 设置为您的主要目标
  2. 正如我在问题中提到的,在您的 Podfile 中添加Realm主要目标和Realm/Headers测试目标
  3. 检查您的所有测试目标是否已Build Settings -> Product Module Name设置为与您的主要目标相同的值
  4. 在我的情况下,最后一步和缺少的步骤$(CONFIGURATION_TEMP_DIR)/YourMainTargetName.build/DerivedSources,在您的测试目标中添加以下路径Build Settings -> Header Search Paths

如果您有多个测试目标,则为每个测试目标执行最后一步,如果您有多个,则为每个构建配置(例如:Alpha、Beta、Release)执行最后一步。

这也为我们提供了从测试目标中删除 swift 类的成员资格的好处(就像我们的 Objective-C 类一样)。

现在你的测试应该运行了,Realm 不应该向你抛出异常。

于 2016-09-13T11:32:45.397 回答