読者です 読者をやめる 読者になる 読者になる

Pragmatic ball boy

iOSを中心にやってる万年球拾いの老害エンジニアメモ

SwiftでUnitTest時に環境変数で分岐させる

テスト対象を@testable import XXXXを使ってimportした場合に、テスト対象のコードをテスト時だけ分岐させて特定の処理を行わないようにしたりしたい場合の対処方法です。

方法としては、環境変数がセットされているかどうかでテストかどうかを判定します。

環境変数の追加

Edit Scheme→Test→Argumentsを選択すると以下の様な画面になります。 f:id:yanamura:20151101193605p:plain

ここのEnvironment Variablesに任意の環境変数を定義します。

分岐処理の追加

上記で追加した環境変数は、NSProcessInfo().environmentを利用して取得することができます。

例えば環境変数が設定されているときはreturnするみたいな場合は以下のようにすればよいです。

guard NSProcessInfo().environment["環境変数名"] == nil else { return true }

// テスト時は実行しないコード
...