問題タブ [sentestingkit]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
xcode - 単体テスト中の Xcode CI ボット エラー (予期しない TestSuiteWillFinish)
最近、私が取り組んでいるアプリを自動的にビルドしてテストするために、iOS アプリでいくつかのXcode ボットをセットアップしました。ビルドして分析するだけなら、ビルド プロセスは正常に機能します。テストを実行するように設定すると、.で終わるさまざまな量のエラーが発生しUnexpected TestSuiteWillFinish
ます。たとえば、最新の実行では次のことが示されました。
テスト スイートの実行 TimeClockTestCase でエラーが発生しました (予期しない TestCaseDidFinish) testParseResponseString でエラーが発生しました (予期しない TestSuiteWillFinish) testGetIntegrationID でエラーが発生しました (予期しない TestSuiteWillFinish)
そして、その前のものには1つのエラーしかありませんでした:
testAddChildObjectTypeTimeClockEvent でエラーが発生しました (予期しない TestSuiteWillFinish)
統合結果には、表示されるエラーに関係なく、すべてのテストが合格として表示されます。(サーバー上でボットを実行する代わりに) Xcode を介して直接テストを実行すると、エラーは発生せず、同じ数のテストに合格します。
これらのエラーの原因と、それらを解消するにはどうすればよいですか?
これらは、TimeClockTestCase からのログです。
ios - キーチェーンのテスト - OSStatus エラー -34018
Xcode で基本的な SenTest フレームワークを使用して、キーチェーンを読み取って変更するコードをテストしようとしています。SecItemDelete
コードはデバイス上で正常に動作しますが、テストを開始すると、キーチェーンを/ SecItemAdd
/etcでタッチするたびにこれらのエラーが発生します。
The operation couldn’t be completed. (OSStatus error -34018 - client has neither application-identifier nor keychain-access-groups entitlements)
iOS Team Provisioning Profile: *
ビルド ターゲットとテスト ターゲットの両方に 一致するワイルドカード プロビジョニング プロファイル ( ) があります。
これらの (未確認の) スタック オーバーフローの回答:
キーチェーンから読み取ると、errSecItemNotFound 25300 になります
キーチェーンを使用するたびにアプリ ID と一致するプロビジョニング プロファイルが必要であると言いますが、それは正しくありません。そうしないと、テスト ターゲットの外で同じエラーが発生します。
より深く掘り下げると、(未確認の)回答は次のとおりです。
SecItemAdd および SecItemCopyMatching がエラー コード -34018 (errSecMissingEntitlement) を返す
キーチェーン内に、より一般的にはバグがある可能性があることを暗示しており、Security.framework
率直に言って恐ろしい.
私の質問は; テストターゲット上にいるときにのみOSStatus エラー -34018 にヒットした人はいますか? それは私が見ている動作のようです。
編集: JorgeDeCorteが以下の回答で使用したこの回答を追加します。
このスレッドには、単体テストのターゲットに問題が存在する場合の解決策が含まれているようです。
https://devforums.apple.com/message/917498#917498
基本的に、テスト ターゲットに実行スクリプトとして以下を追加して、.xcttest フォルダーをコード署名する必要があります。
codesign --verify --force --sign "$CODE_SIGN_IDENTITY" "$CODESIGNING_FOLDER_PATH"
デバイスでキーチェーンをテストすると、多くの -34018 エラーが発生しましたが、これで修正できました。
問題がテスト ターゲットに存在しない場合、これはおそらく解決策ではありません。
したがって、解決策は次のとおりだと思います。テストターゲットに強制的に署名します。
ios - OCMock: モックされたプロトコルが正しく停止されない
次のことを行う OCMock を使用したテスト ケースがあります。
テスト ケースを実行すると、CAAAuthenticationDelegate プロトコルも使用する 2 番目のテスト ケース (完全に異なるテスト クラスとファイル) が SIGABRT で失敗します。
ただし、2 番目のテスト ケースではモックを使用しません。stopMocking
私は成功せずにモックをクリアしようとしていました。
次のモック セットアップは問題なく動作します。
なぜこれが起こるのか、誰か教えてもらえますか?
objective-c - ストーリーボードからプロトタイプ セルをどのようにロードしますか?
ストーリーボード内で定義されている IBOutlet 接続とともに、プロトタイプ セルをロードする方法はありますか?
アップデート
セル (その母体の UICollectionViewCell) を単体テストしたいので、UIViewController コンテキストの外にロードしたいと思います。
事実上、nib からカスタム ビューをロードするのと同じ方法で、そのファイルの所有者を指定し、その IBOutlet を設定します。
ios - アプリとテスト ターゲットに対してフレームワークをリンクする
通常の App ターゲットと対応する UnitTest ターゲット内で使用するカスタム フレームワークがあります。複数の選択肢があるため、正しい実装を選択できないようにランタイムを混乱させることが判明しました。
もちろん、オブジェクトのクラス階層をチェックしたり、他のクラス関連のチェックを行おうとすると、奇妙な動作につながります。
したがって、次の2つの質問に要約されます。
- UIKit コンポーネントなどの同様のログは見られませんが、このフレームワークは両方のターゲットにもリンクされています。フレームワークを間違ってコンパイルしましたか?
- 私が見逃したのは些細な設定の問題ですか?