运行 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""
在测试中 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""