在robotium上测试wifi时出现安全异常



我目前正在使用Robotium进行android测试,当我在android 2.3模拟器中执行以下测试用例时,我得到了一个错误 . lang。.

测试代码:

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

At My Manifest file:

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

And Here's My log cat file

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)

我已经添加了所有的权限manifest.xml,但没有运气。如果您对以下问题熟悉的话,可以帮助我吗?

Thanks in advance

必须在目标应用程序中设置权限。测试应用程序中的权限完全被忽略。这意味着仪表apk永远不会比目标应用程序拥有更多的权限。

实际上可以给你的测试应用程序比你的实际应用程序更多的权限,但要做到这一点,你必须对你的android清单做一些偷偷摸摸的事情。

你要做的是给你的两个应用程序相同的android:sharedUserId在你的清单,这意味着如果其中一个添加了一个额外的权限,他们将有访问它。使用这种方法可以让你的测试应用有很多权限去做任何它想做的事情,我使用了这种方法和另一种方法(让一个意图服务你的测试应用可以发射意图去做那些你正在测试的应用通常无法做的事情)来测试你正在尝试的场景。

最新更新