このプロジェクトについて
# 📸 SnapshotTesting
楽しいSwiftスナップショットテスト。このライブラリを使うと、あらゆるSwiftプラットフォーム上で、あらゆる値、あらゆるフォーマットのスナップショットテストを書くことができます。ビュー、ビューコントローラ、URLリクエスト、Encodableな値などをサポートします。
## 使い方
インストール後、追加の設定は不要です。`SnapshotTesting`モジュールをインポートし、`assertSnapshot`関数を呼び出すだけです。
```swift
import SnapshotTesting
import Testing
@MainActor
struct MyViewControllerTests {
@Test func myViewController() {
let vc = MyViewController()
assertSnapshot(of: vc, as: .image)
}
}
```
アサーションが最初に実行されると、スナップショットが自動的にディスクに記録され、テストは失敗し、新しく記録されたリファレンスのファイルパスが出力されます。以降のテスト実行では、このリファレンスを読み込み、実行時の値と比較します。失敗はXcodeのレポートナビゲータから、またはファイルURLを調べることで確認できます。
新しいリファレンスを記録するには、スナップショットをインラインでカスタマイズするか、`withSnapshotTesting`ツールを使用します。
## あらゆるものをスナップショット
`UIView`の`UIImage`に限定されたほとんどのスナップショットテストライブラリとは異なり、SnapshotTestingはあらゆるSwiftプラットフォーム上であらゆる値のあらゆるフォーマットを扱えます。`assertSnapshot`関数は、値とその値がサポートする任意のスナップショット戦略を受け取ります。
ビューのテストは高度に設定可能です。トレイトコレクションを上書きしたり、単一のシミュレータからデバイス非依存のスナップショットを生成したりできます。
利用可能なスナップショット戦略は次のとおりです。
- ビューおよびビューコントローラ向けの`.image`
- ビュー階層のテキスト表現向けの`.recursiveDescription`
- URLリクエスト向けの`.raw`
- `Encodable`な値向けの`.json`および`.plist`
- ミラーを使ったあらゆる値向けの`.dump`
## 機能
- 多数のスナップショット戦略
- 独自のスナップショット戦略を書ける
- 設定不要
- より手間いらず: 新しいスナップショットは自動的に記録される
- サブクラス不要: 任意のXCTestケースやQuickスペックからアサート可能
- デバイス非依存のスナップショット
- 画像差分をXCTestアタッチメントとして扱うファーストクラスのXcodeサポート
- Swiftをサポートするあらゆるプラットフォームに対応 (iOS、Linux、macOS、tvOS)
- SceneKit、SpriteKit、WebKitのサポート
- `Codable`のサポート
- カスタムdiffツールの統合
## インストール
### Xcode
Swift Packages経由でパッケージを追加し、テストターゲットに追加されていることを確認します。
### Swift Package Manager
`Package.swift`でパッケージを依存関係として追加し、テストターゲットに`SnapshotTesting`を追加します。
## プラグイン
いくつかのコミュニティプラグインが機能を拡張しており、アクセシビリティテスト、色覚異常シミュレーション、SQLiteデータベースマイグレーションテスト、Nimbleマッチャー、SwiftUIプレビュースナップショット、HTMLスナップショットテストなどがあります。
## 関連ツール
`iOSSnapshotTestCase`とJestに触発され、このライブラリは洗練されたユーザー体験とともに、一般化されたスナップショットテストをSwiftにもたらします。
## ライセンス
MITライセンスの下で公開されています。
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.