2016-04-04 18 views
0

私はユニットテスト/ HttpsURLConnectionオブジェクトを使用するクラスライブラリを呼び出す統合テストを書いています。 addRequestPropertysetDoOutputsetRequestMethodのように、ユニットテストを通じて接続オブジェクトのメソッドを呼び出すことながら、何度も私はjava.lang.IllegalStateException: Already connectedような例外を取得します。この振る舞いは、デフォルト値が返されるので、gradleでの追従が原因と考えられます。アンドロイドの実際のHttpURLConnectionで単体テストを行う方法は?

testOptions { 
    unitTests.returnDefaultValues = true 
} 

同じコードがアプリケーションで正常に動作します詳細については

http://tools.android.com/tech-docs/unit-testing-supportを参照してください。テスト中に実際のHttpsURLConnectionオブジェクトを実際に使用する方法はありますか?

+0

HttpsURLConnectionはAndroidの一部であるため、http://developer.android.com/training/testing/unit-testing/instrumented-unit-tests.htmlに記載されているテストケースを作成する必要があります。 – resp78

答えて

0

HttpsURLConnectionはアンドロイドの一部なので、テストする方法の1つは、をhttp://developer.android.com/training/testing/start/index.htmlに記載されているように使用します。これは、AVDまたは実際のデバイスを起動し、そこでテストを実行します。

はあなたが要求と応答を模擬するためのライブラリを使用することができます<uses-permission android:name="android.permission.INTERNET"/>

1

のAndroidManifest.xml

に許可を設定していることを確認します。私はこれをお勧めします: MockWebServer

編集:あなたの質問を再読み込みした後、あなたのユニットテストでのHttpsURLConnectionを使用するよう 、それが見えます。あなたのユニットテストでAndroidのSDKからクラスを使用しようとする問題は、あなたのテストは、計装テストになることを意味し、それはそれは、デバイス/エミュレータ上で実行しなければならないことを意味します。

あなたが統合計装テストの例をしたい場合は、this偉大な例を見てみましょう。

HttpsURLConnectionはJava JDKバンドルにも含まれているため、そのクラス(import javax.net.ssl)を使用すると、Androidクラスを使用しないという変更がある可能性があります。 JVM(デバイス/エミュレータではありません)。

あなたが少し良くインストルメントとローカルユニットテストの違いを理解したい場合は、thisブログの記事をお読みください。

+0

実際のサーバーとの統合テストを行うことを考えています。 – resp78

関連する問題