【问题标题】:Setting up project that uses Cedar for tests, Objective-C Realm and is testing swift Realm models设置使用 Cedar 进行测试的项目,Objective-C Realm 并正在测试 swift Realm 模型
【发布时间】:2016-09-13 08:59:17
【问题描述】:

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

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

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

  1. 在 Podfile 中将 Realm/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(或者我不知道如何使其工作)

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

【问题讨论】:

    标签: objective-c swift realm cedar-bdd


    【解决方案1】:

    在等待回复的过程中,我在这位绅士的blog post中找到了答案:)

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-12
      • 1970-01-01
      • 2016-03-16
      • 2014-09-15
      相关资源
      最近更新 更多