【问题标题】:Not able to use objective-C class in swift unit tests无法在快速单元测试中使用 Objective-C 类
【发布时间】:2018-10-10 07:27:29
【问题描述】:

我想在我的快速测试中使用客观的 C 类。

  • 我的项目最初是在目标 c 中设置的。
  • 我已经为我的项目设置了桥接头。
  • 我在文件的桥接头中已经有了 import 语句,我想在测试中使用它。
  • 测试目标的搜索路径也设置为相同的桥接头,尽管我也尝试使用单独的桥接头。
  • 我使用可可豆荚,所以有一个 xcworkspace 文件。
  • Pod 文件已包含用于测试的继承搜索路径,尽管我没有在测试中使用 pod 框架。

我在尝试使用该类时收到“使用未声明的类型 'SySearchProductRequest'”错误。 SySearchProductRequest 是我要使用的 objc 类。

我正在使用@testable import Mymodulename 在测试中导入我的具有此类的模块。

我坚持使用编写 objc 测试用例的方法,我不想这样做。有没有办法或者我做错了什么或错过了什么来完成这项工作。

【问题讨论】:

  • 我尝试在我的测试目标中添加 $CONFIGURATION_TEMP_DIR/MyProject.build/DerivedSources 以在我的 HEADER SEARCH PATHS 中包含派生源,它似乎已经解决了这个问题,尽管我尝试了多种方法所以不确定这个。
  • 试过了,它对我不起作用,因为没有任何 Objective-C 头文件被复制到 $CONFIGURATION_TEMP_DIR/MyProject.build/DerivedSources。

标签: objective-c swift xctest bridging-header


【解决方案1】:

只需检查您的类是否已添加到文件检查器Example Screenshot 的目标成员中的测试目标中。然后再次构建项目。希望它能消除错误。

【讨论】:

  • 嘿@Saurabh 我使用可测试导入来解析路径,因此不需要此步骤。谢谢
  • Saurabh,我强烈反对将生产代码添加到测试目标中。虽然“它有效”,但它是不正确的。
  • 好的@乔恩·里德。我会考虑并尝试为问题找到更好的解决方案。谢谢。
  • @JonReid 您能否进一步说明您不鼓励将生产代码添加到测试目标?除非将其添加到测试目标中,否则您将如何测试生产代码?
  • @Petar 正确设置后,测试目标链接到生产代码目标。除了声明为私有的东西外,所有东西都可以通过@testable import 访问。
猜你喜欢
  • 2015-03-22
  • 1970-01-01
  • 2017-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-20
  • 1970-01-01
相关资源
最近更新 更多