swift - 链接到二进制框架的单元测试

标签 swift xcode unit-testing

我正在尝试使用 2 个框架构建一个应用程序:一个已经编译,另一个是我的项目的正常目标。我可以使应用程序运行,但我很难运行单元测试。我创建了一个包含 3 个元素的虚拟项目来简化事情:

框架 1 仅包含一个类:

public class DummyClassFramework1{
    public static func helloWorld()-> String {
        return "Hello from Framework 1"
    }
}

框架 2 仅包含一个类:

import Framework1
public class DummyClassFramework2{
    public static func helloWorld()-> String {
        return DummyClassFramework1.helloWorld() //Calling a class from framework1
    }
}

使用此 View Controller 的演示应用程序:

import Framework2
class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        print(DummyClassFramework2.helloWorld())
    }
}

当我将所有内容放在同一个项目中时,一切都正常:测试框架1,测试框架2,测试应用程序。但是,当我使用 lipo 生成胖框架 1 时,将 .framework 文件复制到包含框架 2 和演示应用程序的新项目中:我无法测试框架 2 也无法测试演示应用程序。不过我可以正常运行该应用程序。

启动测试时出现的错误是:

2018-09-13 11:51:04.645977+0200 xctest[34017:587268] 无法加载 bundle “Framework1”,因为它已损坏或缺少必要的资源。尝试重新安装该 bundle 。

最佳答案

其实我自己找到了解决方案:

进入目标 Framework2Test -> 常规 -> 测试 -> 在主机应用程序中选择演示应用程序。

由于演示应用程序已经嵌入了二进制框架,因此测试将顺利运行

关于swift - 链接到二进制框架的单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52311172/

相关文章:

ios - 从用户位置查找数组中最接近的经度和纬度,并根据从一个纬度到另一个纬度的最短距离对数组进行排序

iphone - 更改 UIPickerView 中两个不同组件中的行

java - 对单元测试 DAO 的疑问

python - 单元测试后的命令不执行

java - JDBC/数据库单元测试的最佳实践

ios - 使用 UISegmentedControl 来构建这样的菜单?

ios - 删除关系对象时更新 NSFetchedResultsController 对象

ios - swift : Sending custom data between two devices (not on the same network)

objective-c - 警告 : duplicate protocol definition of '...' is ignored

ios - 每个 Xcode 方案的权利/能力