Ios 测试类的Bundle返回Xcode 10中的主Bundle,而不是单元测试Bundle

Ios 测试类的Bundle返回Xcode 10中的主Bundle,而不是单元测试Bundle,ios,unit-testing,xctest,xcode10,Ios,Unit Testing,Xctest,Xcode10,我们有在应用程序中托管的单元测试。要加载我们使用的测试资源,请执行以下操作: Bundle(for:TestClass.self).path(forResource:“some file”,类型:“json”) 在Xcode 9中,它返回如下内容:/var/folders/4k/dzpnw8352jn\u fl5hcc76pjs8k9qytq/T/com.apple.dt.xtest/IDETestRunSession-707F04EA-2C21-4BA4-8730-00B0EC0F708F/U

我们有在应用程序中托管的单元测试。要加载我们使用的测试资源,请执行以下操作:
Bundle(for:TestClass.self).path(forResource:“some file”,类型:“json”)

在Xcode 9中,它返回如下内容:
/var/folders/4k/dzpnw8352jn\u fl5hcc76pjs8k9qytq/T/com.apple.dt.xtest/IDETestRunSession-707F04EA-2C21-4BA4-8730-00B0EC0F708F/UnitTests-2C97055A-9154-4521-9D12-7CF32FC38793/Session-UnitTests-2018-06-08\u 141829-RGxhj2.log

但在Xcode 10中,Bundle(for:TestClass.self)返回应用程序Bundle路径
/Users/user/Library/Developer/CoreSimulator/Devices/118AACB9-486C-4E3B-94EA-257C3F082AE1/data/Containers/Bundle/application/4234B280-E49C-4044-BAF4-CBFFEA8AFDB4/App.App

由于这些文件包含在单元测试目标中,因此无法再找到它们

更新:


修复了Xcode 10.1中的漏洞

这可能是Xcode 10/Swift 4.2中的一个漏洞,因为在发行说明中还有另一个与
捆绑包
相关的漏洞。你肯定应该提交一份雷达文件,以确保问题是已知的

来自Xcode 10测试版发行说明

基础API包.init(对于:AnyClass)在使用继承自泛型类的类时总是返回应用程序包,即使该类本身不是泛型类。(40367300)

作为一个潜在的工作,您可以考虑使用测试对象的束标识符。

要查找测试目标的包标识符,请查看以下内容:

更新 似乎Xcode 10的
捆绑包一直存在问题(实际上是Swift 4.2出现了问题)

来自Xcode 10.1 beta 2

•Bundle类的init(for:)初始值设定项现在与Swift类一致工作,包括不在最新操作系统版本上运行时。(44489216)


在一些类重构之后,问题消失了。如果类中包含的URL或URLRequest属性包不正确,则情况确实如此

e、 g.在同一模块中声明了三个类,而bundle是不同的:

class WithRequest {
    var request: URLRequest?
}

class WithURL {
    var url: URL?
}

class WithString {
    var string: String?
}

print(Bundle(for: WithRequest.self)) //Incorrect App Bundle
print(Bundle(for: WithURL.self)) //Incorrect App Bundle
print(Bundle(for: WithString.self)) //Correct bundle

这个问题现在已在Xcode 10.1中修复,正如发行说明中提到的解决问题

谢谢。让我来检查一下我所面临的问题,如果您能提供您在上面提到的问题的源代码,那么这个Bundle.init(for:AnyClass)总是返回应用程序bundle@dev296令人遗憾的是,Xcode 10 beta发行说明中已经没有了它。我更新了我的答案,引用了Xcode 10.1 Betath中修复的类似问题。这听起来仍然像个bug。Xcode 9中的行为相同吗?