私は現在、テストに関して iOS 12 シミュレーターで非常に奇妙な問題を抱えており、それを解決する方法がよくわかりません。
ここで説明するために最善を尽くしますが、何が起こっているのか完全には理解していません。意味が分からない場合はご容赦ください。
いくつかの個別のプロジェクトを含む Xcode ワークスペースがあり、それぞれにいくつかの機能テストが含まれています。
このワークスペースは Bitrise にも接続されており、マージ リクエストが開かれるたびにテストを実行します。
すべてのプロジェクトとターゲットを Swift 4.2 にアップグレードするまで、すべて正常に機能していました。アップグレード自体は問題なく行われ、プロジェクト ファイルの設定と一緒にアプリ デリゲートに小さな変更が 1 つだけあったため、移行で問題が発生したことはないと確信しています。
以前は、ローカル シミュレーターと Bitrise ですべてのテストが正常に実行され、合格していました。
この移行後、Bitrise で 2 つのテストが失敗し、毎回同じ 2 つです。
少し遊んだ後、私はなんとかローカルに複製し、iOS 12 シミュレーターの初回起動のみで実行すると、これらのテストがローカルで失敗することを発見しました。
新しい iOS 11.4 シミュレーターで初めてテストすると、すべてのテストに合格します。
新しい iOS 12 シミュレーターで初めてテストすると、2 つのテストが失敗します。
その後、iOS 12 シミュレーターを閉じて再度テストすると、2 つのテストのいずれかが失敗します。
完全に新しいシミュレーターの起動にリンクされているように見えるという事実は、ビルドごとに新しいシミュレーターを使用して新しい環境で実行されると想像しているため、Bitrise が失敗する理由を説明しています (ただし、ある時点で幸運に恵まれ、すでに iOS 12 シミュレーターを実行しているので、すべて正常に動作しますか?!)。
テスト自体は、地域の監視に関連しています。リージョンの監視リクエストが送信されたときにリージョンを配列に追加し、監視を停止するリクエストが送信されたときにそれを削除するモック ロケーション マネージャーがあります。
失敗するテストはtestStopScanningRemovesMonitoredRegions
.
2 つの領域を追加するためのアサーションがパスします。
各削除後のアサーションは失敗します。
私が作成した仲介者オブジェクトが、CLLocationManager
それ自体ではなく、これらの開始/停止監視イベントを正しく要求することをテストしています。
これがある程度の意味をなすことを願っています。私はすべての関連情報を含めようとしています!