2013-06-05 7 views
6

현재 Android 2.3 에뮬레이터에서 다음 testcase를 실행할 때 오류가 발생합니다. "java.lang.SecurityException : WifiService : 사용자 10038도 아니요 현재 프로세스는 android.permission.CHANGE_WIFI_STATE입니다. "robium에서 wifi를 테스트하는 동안 보안 예외가 발생했습니다.

테스트 코드 : 내 매니페스트 파일에서

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(); 
    } 

: 여기

<?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> 

그리고 내가 명시하는 모든 권한을 추가 한

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) 

내 로그 고양이 파일입니다. xxx하지만 행운은 없습니다. 제발 도와주세요. 당신은 아래의 문제에 익숙합니까?

미리 감사드립니다.

+1

해결책을 찾았습니까? –

+0

@RenatoLochetti 해결책을 기다리는 중입니다. –

답변

8

사용 권한은 대상 응용 프로그램에서 설정해야합니다. 테스트 응용 프로그램의 사용 권한은 완전히 무시됩니다. 즉, instrumnetation apk에는 대상 응용 프로그램보다 더 많은 권한이 없습니다.

+0

@helloworld :이 솔루션은 저에게 효과적이었습니다. 두 매니페스트에 uses-permission을 두십시오. –

1

실제로 테스트 응용 프로그램에 실제 응용 프로그램보다 많은 권한을 부여 할 수는 있지만 실제로 수행하려면 안드로이드 매니페스트에 약간 부적절한 작업을 수행해야합니다.

두 앱에 매니페스트에 동일한 android:sharedUserId을 부여하면 두 사람 모두 액세스 권한이있는 추가 권한을 추가 할 수 있습니다. 이 방법을 사용하면 원하는대로 무엇이든 할 수있는 권한을 가진 테스트 응용 프로그램을 만들 수 있습니다.이 방법과 다른 방법을 모두 사용했습니다 (테스트 응용 프로그램이 의도적으로 수행 할 수있는 의도 서비스를 만들 수 있습니다. 응용 프로그램)을 사용하여 시도하고있는 종류의 시나리오를 테스트 할 수 있습니다.

관련 문제