branch10480’s blog

Topics that I've learned.

iOSアプリ開発自動テストの教科書 を読んでいく 〜 25 〜

XCTAttachment で保存できるコンテンツ

以下の形式をサポートしており、イニシャライザとして指定できるようになっている。

クラス
String
UIImage
XCUIScreenshot
URL
Data
Any

UIImage や XCUIScreenshot は XCTAttachment.ImageQuality で保存する品質を指定可能。

let attachment = XCTAttachment(image: image, quality: .low)

デフォルトでは .original が指定される。

種類

  • .original
  • .low
  • .medium

XCTContext.runActivity と組み合わせる

add メソッドは XCTContext.runActivity の引数 XCTActivity に対しても使用でき、階層構造を保ちつつ情報を保存することができる。

import XCTest
import UIKit

class SampleTestCases: XCTestCase {
    func testAttachmentWithRunActivity() {

        XCTContext.runActivity(named: "1st layer") { (activity: XCTActivity) -> Result in

            let attachment = XCTAttachment(string: "Hello!")
            attachment.name = "Hello!"
            activity.add(attachment)    // 1st layer に対して保存

            XCTContext.runActivity(named: "2nd layer") { (activity: XCTActivity) -> Result in

                let attachment = XCTAttachment(string: "World")
                attachment.name = "World"
                activity.add(attachment)    // 2nd layer に対して保存
            }
        }
        
        XCTFail()
    }
}

> 次回に続く