【问题标题】:How to access a swift file from an objective file, while both of them are in Unit Test?如何从目标文件访问 swift 文件,而它们都在单元测试中?
【发布时间】:2019-11-13 13:13:10
【问题描述】:

这个问题可能仍然让很多人感到困惑,但是这个问题还没有答案。

我有 2 个文件,都在 Unit Test 目录中。
1. NSError 的快速扩展。让我们称之为 NSErrorExtension.swift。此扩展包含一些静态方法。
2. 一个客观的 C 测试类,我们称之为 UnitTest1.m

现在,我想从 UnitTest1.m 访问 NSErrorExtension.swift 中的静态方法。我该怎么做呢?它只是告诉我“没有已知的选择器类方法......”我尝试了很多解决方案,但没有一个有效。

【问题讨论】:

    标签: objective-c swift xcode unit-testing


    【解决方案1】:

    遇到同样的问题,MyAppTests-Swift.h 似乎不是很“可导入”:)

    我不得不求助于一些不太好的解决方法来完成这项工作。对于类实例化,我使用了NSClassFromString(),然后转换为在 Objective-C 端可见的协议。对于您的扩展,您可以通过在头文件中声明方法来执行类似的操作,而无需实际实现它们。

    所以假设你的 NSErrorExtension.swift 扩展看起来像这样:

    extension NSError {
        @objc func someFunc() -> SomeResult
    }
    

    ,你可以创建一个NSErrorExtension.h文件(没有对应的.m一个):

    @interface NSError (UnitTestExtensions)
    - (SomeResult *)someFunc;
    @end
    

    这应该使该函数在 Objective-C 端可用。不利的一面是,您需要为要从单元测试的 Swift 端公开的每个函数执行此操作。

    【讨论】:

      猜你喜欢
      • 2023-04-06
      • 1970-01-01
      • 2014-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多