运行 XCTests 时访问主应用程序包

Accessing Bundle of main application while running XCTests

在测试中 target -> General -> Testing: set Host Application to None,因此没有应用启动。

但在那种情况下,我无法使用 Bundle.main.resourcePath 和访问我的主应用程序的资源(其中一些命令文件作为资源包含在内,我需要使用 Process() 运行 它们).

有人可以提出解决方案吗?

Bundle(identifier: "com.something.app") 将为您获取特定捆绑包 ID 的捆绑包。问题是,如果您的主要目标的包 ID 更改,这将失败。

您还可以尝试获取特定 class 的捆绑包:

let bundle = Bundle(for: SomeClass.self)

其中 SomeClass 是您主捆绑包中的 class。

也将文件添加到测试目标的“复制捆绑资源”,然后使用以下代码获取资源路径,而不是"\(Bundle.main.resourcePath!)/test.command"

let testBundle = Bundle(for: type(of: self)) let path = "\(testBundle.resourcePath!)/test.command""