关于 iOSSnapshotTestCase / FBSnapshotTestCase 使用的一点备注



FBSnapshotTestCase 现在是由Uber 维护了。>>> Github 地址:iOSSnapshotTestCase


新建项目时候勾选 tests target ️
image.png
如果新建项目时候忘记勾选 tests target,按照下面方式新建一个:File >> New >> Target >> Unit Testing Bundle
截屏2020-04-25 11.08.41.png
image.png
导入 iOSSnapshotTestCase


target 'TestDemo' do
  # Comment the next line if you don't want to use dynamic frameworks
  use_frameworks!
  
  target 'TestDemoTests' do
    inherit! :search_paths
    pod 'iOSSnapshotTestCase'
  end

end


iOSSnapshotTestCase 环境配置
Name Value
FB_REFERENCE_IMAGE_DIR $(SOURCE_ROOT)/$(PROJECT_NAME)Tests/ReferenceImages
IMAGE_DIFF_DIR $(SOURCE_ROOT)/$(PROJECT_NAME)Tests/FailureDiffs


在如下位置配置参数:
image.png

Tests code:

import XCTest
import FBSnapshotTestCase
@testable import TestDemo

class TestDemoTests: FBSnapshotTestCase {
    
    var vc: UIViewController!

    override func setUp() {
        super.setUp()
        vc = SecondViewController()
        self.recordMode = true
    }

    override func tearDown() {
        vc = nil
        super.tearDown()
    }

    func testExample() {
        FBSnapshotVerifyView(vc.view)
    }
}
第一次 Run 的时候需要把 self.recordMode 设置为 true. 保存作为参照的图,第一次run test 是 failed 的,原因也提示在下图了。第二次 run 就可以把 self.recordMode 设置为 false.
image.png
image.png
️踩的坑:

Run tests 的时候遇到 error:


image.png
原因是在create target的时候选中了UI Testing Bundle 而不是 Unit Testing Bundle.

你可能感兴趣的:(关于 iOSSnapshotTestCase / FBSnapshotTestCase 使用的一点备注)