使用Realm进行单元测试:未声明的类型

时间:2017-09-11 09:34:00

标签: swift unit-testing realm

import RealmSwift

// MARK: Class

/// The DataPoint object representation
public class DataPoint: Object {

  // MARK: - Variables

  /// The latitude of the point
  dynamic var lat: Double = 0
  /// The longitude of the point
  dynamic var lng: Double = 0
  /// The accuracy of the point
  dynamic var accuracy: Double = 0

  /// The added point date of the point
  dynamic var dateAdded: Date = Date()
  /// The last sync date of the point
  dynamic var lastSynced: Date?
}

所以我有上面简单的Realm Object Class。我想单独测试一些与Realm无关的东西。最初我已经将此类的目标成员资格设置为每个目标(App,UnitTests,UITests),但在我得到重复的类错误之后,我发现该领域只需要主应用程序目标。所以我做了,我确实按照建议将该课程设为公开。但现在单元测试目标甚至没有构建错误:

Undeclared Type 'DataPoint'

任何想法如何在不将类添加到所有目标成员资格的情况下实际解决此错误。

1 个答案:

答案 0 :(得分:2)

您不需要将App的类添加到单元测试目标中。 App目标与单元测试目标隐式链接。在测试类中,您只能@testabe import App(或import App,如果您只使用public个符号)。确保选择"主机应用程序"并检查"允许测试主机应用程序API" at" General"单元测试目标设置中的选项卡。如果没有选择"主机应用程序",Xcode不会将App模块链接到单元测试目标。

另一方面,您无法在UI测试中使用App模块的API。因为在UI测试期间,您的测试类无法访问您应用的代码。

来自Apple's Docs

  

UI测试与基本方式的单元测试不同。单元测试使您可以在应用程序的范围内工作,并允许您通过完全访问应用程序的变量和状态来练习功能和方法。 UI测试以与用户无法访问应用程序的内部方法,功能和变量相同的方式运行应用程序的UI。这使您的测试能够以与用户相同的方式查看应用程序,从而暴露用户遇到的UI问题。

如果您仍然如上所述失败,则设置有问题。请分享项目以重现问题以供调查。