【问题标题】:Xcode. Image resources added to a test target are not copied into the tests bundleXcode。添加到测试目标的图像资源不会复制到测试包中
【发布时间】:2018-09-22 11:20:15
【问题描述】:

我为UIImage 类写了一些扩展,并希望通过单元测试来覆盖它。我添加了一些图像来测试目标并检查它是否出现在Copy Bundle Resources 列表中。

在测试代码中,我使用了一个模型对象来为我提供测试数据。

class TestConstants {
    private static var bundle: Bundle {
        return Bundle(for: UIImageExtensionsTests.self)
    }
    private static var birdImageURL: URL {
        let path = self.bundle.url(forResource: "birds", withExtension: "png")
        return path!
    }
    static var birdImageData: Data {
        return try! Data(contentsOf: self.birdImageURL)
    }
}

不幸的是 birds.png 图像不在测试包中,但另一个资源 drm.txt 存在。 我有点困惑是Xcode中的错误吗? 顺便说一句,我下载了 Xcode 9.4 beta 并且有相同的行为 - 图像不会复制到测试包中。

#UPDATE

UIImageExtensionsTests 是与drm.txtbirds.png 文件存在于同一目标中的测试类

【问题讨论】:

  • 什么是UIImageExtensionsTests
  • 添加了有关 UIImageExtensionsTests 的详细信息。它的测试类出现在测试目标中
  • 对我来说一切都很好。事实上,我自己试了一下,我的测试运行得很好。也许清理并构建测试目标,然后运行测试,如果仍然存在一些错误,则将确切的错误消息添加到您的问题中。
  • @staticVoidMan 您是否在测试目标中添加了图像资源?因为使用txt文件没有问题。但仅限png 文件
  • 是的,我确实添加了。该图像应该添加到您的测试目标中,在您的情况下,它似乎确实被添加了。对吗?

标签: swift xcode unit-testing


【解决方案1】:

要获得适当的 Bundle,请使用:

 let bundle = Bundle.init(for: TestConstants.classForCoder())

【讨论】:

  • 但是如何解决test bundle中没有图片资源的问题呢?
  • Tje 图像在捆绑包中,只是你获取它的方式失败了
  • 我截取了测试包中没有birds.png 文件的屏幕截图。我可以访问drm.txt,但不能访问birds.png 并且TestConstants 不是NSObject 的子类,因此它不符合NSCoding 协议并且无法调用classForCoder跨度>
【解决方案2】:

我没有仔细阅读日志是我的错。 问题是在互联网上建立的“错误”图像发生的。 Xcode 无法处理图像,因此它没有将其复制到测试包。

阅读时 /Users/igork/developer/gitlab/ios.gym-master/GymMasterTests/Resources/birds.png pngcrush 捕获 libpng 错误:不是 PNG 文件..

并且此错误不会导致构建和运行目标失败。所以在我的情况下,测试开始了:(

【讨论】:

  • aah...这是您在问题中输入的信息。
猜你喜欢
  • 2022-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-24
  • 1970-01-01
  • 1970-01-01
  • 2014-12-28
  • 1970-01-01
相关资源
最近更新 更多