私はカスタムダイアログを含むアプリケーションを単体テストしています。このダイアログはandroid.app.Dialog
から継承されますが、Activity
の特別なサブクラスが必要です。これは、それが必要とするいくつかの機能を提供するCustomActivity
と呼ばせてください。私はAndroidでカスタムダイアログを単体テストしようとしており、インスタンス化できないようです。
テスト済みのアプリケーションからアクティビティの1つをインスタンス化するのは避けたいのですが、テスト済みです。私は単体テストであり、ブラックボックステストではないので、ダイアログ内のすべてのパブリック関数を実行したい。ただし、最初にダイアログをインスタンス化せずに、CustomActivity
インスタンスが必要です。
私はCustomActivity
のモックサブクラスを作成しようとしましたが、それを使ってダイアログを起動しましたが、私は同じ問題を抱えています。テストアプリケーションは、テストアプリケーションでアクティビティを探していません。応用。だから私は "活動を解決することができません"を取得します。
私はまた、Instrumentation.launchActivity
を使用せずに自分でアクティビティを作成しようとしましたが、それにはコンテキストが必要です。コンテキストには、InstrumentationTestCase
がありません。 AndroidTestCase
を代わりに使用すると、提供されたコンテキスト(getContext
を介して)はちょうどContextWrapper
であり、コンテキストをラップしていないように見えるので、正方形に戻ります。最初にアクティビティをインスタンス化する必要があります。
私はグーグルでグーグルをしています。私がユニットテストに必要な最初の人物であるとは信じられません。Dialog
私には、ActivitiTestCase2
と似た何かが必要だが、必要な文脈を提供するダイアログが必要だと思われる。
ダイアログを作成する最も良い方法は何ですか?私が試したことのない別の方法がありますか?誰かがカスタムダイアログユニットテストの例を持っていますか?
これは良い提案です。あなたは実際にこれを試したことがありますか?アクティビティのないダイアログをインスタンス化することは可能ですか?既にアンドロイドシステムでは、いくつかの緊密な結合があるようです。 :) –
私はそれを試してみましたが、実際のアクティビティ・コンテキストがなくてもダイアログを表示することはできません。ここには多くのAndroidの魔法があり、苦労しています。ダイアログをテストするのは本当に難しいでしょうか? –
私は、CustomActivityをインスタンス化するのが理にかなっているのは、扱いが難しいという理由からだと思います。上記の手法では、アクティビティコンテキストを使用する必要がありますが、非常に簡単なアクティビティを使用できます。アプリケーションに非常に単純なアクティビティがまだ含まれていない場合は、空のアクティビティを追加し、テストでそのアクティビティをコンテキストに使用できます。確かに、それは完璧ではありませんが、機能します。もし誰かがもっと良い解決策を持っていれば、私もそれを聞いてうれしく思います。あなたは、このものに関連するAndroidのデザインにいくつかの欠陥があると思うのは間違いありません。 –