2013-06-05 15 views
6

Şu anda robotium ile android test üzerinde çalışıyorum, Android 2.3 öykünücüsünde aşağıdaki deneme sürümünü çalıştırdığımda hata alıyorum "java.lang.SecurityException: WifiService: Ne 10038 ne de ne Mevcut işlem android.permission.CHANGE_WIFI_STATE. "güvenlik istisnası robotium üzerinde test ederken

Testi kodu: My Manifest dosyası anda

public void testScheduledPayments() 
    { 
     solo.clickOnButton(0); 
     solo.enterText(0, "demo"); 
     solo.enterText(1,"password"); 
     solo.clickOnButton("Log In"); 
     WifiManager wifiMan = (WifiManager) solo.getCurrentActivity().getSystemService(Context.WIFI_SERVICE); 
     wifiMan.setWifiEnabled(false); 
     solo.clickOnText("Payments"); 
     solo.clickInList(2); 
     solo.waitForText("Loading paymnets"); 
     solo.clickInList(0); 
     solo.clickOnMenuItem("Logout"); 
     solo.clickOnButton("Logout"); 
     solo.finishOpenedActivities(); 
    } 

: Burada

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.tesaptra" 
    android:versionCode="1" 
    android:versionName="1.0"> 
     <uses-sdk android:minSdkVersion="10" /> 


    <instrumentation 
     android:name="android.test.InstrumentationTestRunner" 
     android:targetPackage="com.info.native" /> 

    <application 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" > 
     <uses-library android:name="android.test.runner" /> 

    </application> 
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission> 

<uses-permission android:name="android.permission.INTERNET"></uses-permission> 

<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission> 

</manifest> 

Ve tezahür tüm izinleri eklemiş

java.lang.SecurityException: WifiService: Neither user 10038 nor current process has android.permission.CHANGE_WIFI_STATE. 
at android.os.Parcel.readException(Parcel.java:1322) 
at android.os.Parcel.readException(Parcel.java:1276) 
at android.net.wifi.IWifiManager$Stub$Proxy.setWifiEnabled(IWifiManager.java:614) 
at android.net.wifi.WifiManager.setWifiEnabled(WifiManager.java:713) 
at com.testaptra.Payments.testScheduledPaymnets(Payments.java:113) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at android.test.InstrumentationTestCase.runMethod(InstrumentationTestCase.java:204) 
at android.test.InstrumentationTestCase.runTest(InstrumentationTestCase.java:194) 
at android.test.ActivityInstrumentationTestCase2.runTest(ActivityInstrumentationTestCase2.java:186) 
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169) 
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154) 
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:529) 
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1448) 

Benim günlük kedi dosya. xml ama hayır şans. Aşağıdaki konuyla aşina mısınız?

Şimdiden teşekkürler

+1

Çözüm buldunuz mu? –

+0

@RenatoLochetti nope çözüm bekleyen –

cevap

8

İzin, hedef uygulamada ayarlanmalıdır. Test uygulamasındaki izinler tamamen dikkate alınmaz. Bu enstrümantasyon apk, hedef uygulamadan daha fazla ayrıcalıklara sahip olmadığı anlamına gelir.

+0

@helloworld: Bu çözüm benim için çalıştı. Her iki manifestte de kullanım-izni koyun. –

1

Test uygulamanıza gerçek uygulamanızınkinden daha fazla izin vermeniz mümkündür, ancak bunu yapmak için android manifestinizle biraz sinsi bir şey yapmanız gerekir.

Yapmanız gereken şey, hem uygulamanıza aynı android:sharedUserId bildirinizi vermek, hem de her ikisinin de her ikisine de erişebilecekleri ek bir izin eklemesidir. Bunu kullanarak, test uygulamanızın ne isterse yapması gereken çok sayıda izin ile mümkün olabilir, hem bu yaklaşımı hem de farklı bir yaklaşımı kullandım (test uygulamanızın, normalde gerçekleştirilemeyen şeylere yapmak için niyetleri ateşleyebilir) denediğiniz senaryoyu test etmek için) ile test ediyoruz.