2016-04-04 16 views
0

HttpsURLConnection nesnelerini kullanan sınıf kitaplığını çağırtan birim testleri/bütünleştirme testleri yazıyorum. Çoğu kez addRequestProperty, setDoOutput, setRequestMethod gibi java.lang.IllegalStateException: Already connected gibi istisnalar alıyorum. Davranış, varsayılan değerler döndükçe büyük olasılıkla notta takip nedeniyle oluşur.Android'de gerçek HttpURLConnection ile birim testi nasıl yapılır?

testOptions { 
    unitTests.returnDefaultValues = true 
} 

fazla ayrıntı

aynı kod Uygulaması'nda çalışıyor için http://tools.android.com/tech-docs/unit-testing-support bakınız. Gerçek HttpsURLConnection nesnesini gerçekten test ederken kullanmanın bir yolu var mı?

+0

http://developer.android.com/training/testing/unit-testing/instrumented-unit-tests.html adresinde açıklandığı gibi test senaryolarını yazmak zorundayım gibi görünüyor, çünkü HttpsURLConnection, android'nin bir parçası. – resp78

cevap

0

HttpsURLConnection, android'in bir parçası olduğundan, testinhttp://developer.android.com/training/testing/start/index.html adresinde açıklandığı gibi kullanacağı tek yoldur. Bu bir AVD'yi veya gerçek bir aygıtı başlatır ve orada testler çalıştırır.

Eğer sen istek ve yanıtları alay etmek kütüphaneleri kullanabilirsiniz <uses-permission android:name="android.permission.INTERNET"/>

1

AndroidManifest.xml'de

yılında izni ayarlamak emin olun. Bunu öneririm: MockWebServer.

Düzenleme: Sorunuzu yeniden okuduktan sonra size birim testlerinde HttpsURLConnection kullanmak istediğiniz gibi görünüyor. Birim testinizde Android SDK'dan bir sınıf kullanmaya çalışmak problemi, testinizin bir enstrümantasyon testi haline gelmesi anlamına gelir ve bu, cihazın/emülatörde çalıştırılması gerektiği anlamına gelir.

Entegrasyon enstrümantasyon testleri için bir örnek istiyorsanız, this örneğine bir göz atın.

HttpsURLConnection, Java JDK paketinde de olduğu için, bu sınıfı kullanırsanız (javax.net.ssl ​​dosyasını içe aktarırsanız), herhangi bir Android sınıfını kullanmamanın bir değişikliğiniz olabilir, bu nedenle sınamayı yerel bir birim sınaması olarak çalıştırabilirsiniz. JVM'niz (cihaz/emülatör değil).

Enstrümantal ve yerel birim testleri arasındaki farkı biraz daha iyi anlamak isterseniz, this blog gönderisini okuyun.

+0

Fikir, gerçek sunucularla entegrasyon testleri yapmaktır. – resp78