JUnitとそのAndroidでの使用法についてより多くの経験を積もうとしています。この公式のAndroidトレーニングを参照してXMLデータを解析する使用されたメソッドのいくつかをテストする方法の例を誰かが提供できるかどうか疑問に思います。
特に、StackOverflowXmlParserクラスに含まれるメソッドと、loadXmlFromNetwork()およびdownloadUrl()メソッド[classNetworkActivity.java]をどのようにテストしますか。
JUnitとそのAndroidでの使用法についてより多くの経験を積もうとしています。この公式のAndroidトレーニングを参照してXMLデータを解析する使用されたメソッドのいくつかをテストする方法の例を誰かが提供できるかどうか疑問に思います。
特に、StackOverflowXmlParserクラスに含まれるメソッドと、loadXmlFromNetwork()およびdownloadUrl()メソッド[classNetworkActivity.java]をどのようにテストしますか。
ユニットテストについて私があなたに与えることができる最善のアドバイスは、最初にテストのユニットが何であるかを本当に理解することです。テスト、特に単体テストを作成するときは、テストの単位が単一のクラスであることを確認します。他のすべては嘲笑されており、私のテストでは、クラスのすべてのパブリックメソッドが約束どおりに動作することを確認しています。
とは言うものの、あなたが求めている方法はEVILUNTESTABLECODEです。このようなコードがGoogleのエンジニアからのものであるのを見るのは少し衝撃的です。私の推測では、変数はすべてメソッドの先頭で宣言されているため、フロントエンドのWeb開発者であり、Javascriptスタイルと、例を書いた人があまり経験がないnull
ことを示唆する値を持たないすべてのローカル変数の初期化です。Java。
メソッドをテスト可能な状態にするには、メソッドを大幅にリファクタリングする必要があります。たとえばloadXmlFromNetwork
、嘘をついているAPIを提示します。これは、ネットワークからxmlを「ロード」するのではなく、それを解析して、List<Entry>
その後、これらのエントリからHTML形式の文字列にデータを詰め込んでそれを返します。
このメソッドだけの最初の問題は、必要なものを要求するのではなく、それ自体の内部にオブジェクトを作成することです。これらのオブジェクトをモックしてロジックをテストすることはできないため、これはテストの問題を引き起こします。テストでは、ネットワークに依存する必要はないので、HttpURLConnection
コードを実行するための動作をモックしてモックする必要があります。
あなたを正しい方向に向けるために、Googleのリードテストエバンジェリストからのこのビデオを見てください: