Porting 了新的Wifi hardware_legancy,

这个时候需要对对  Android Wifi On/Off 作压力测试

 

发现可以使用Android Instrument 和Android Test Project 来做测试。

 

1.  在Eclipse 里新建 一个 Android Test Project.

 

 测试代码

AllTest.java

package com.example.wifitoggle; import junit.framework.Test; import junit.framework.TestSuite; public class AllTests { public static Test suite() { TestSuite suite = new TestSuite( "Test for com.android.settings.testsuite"); //$JUnit-BEGIN$ //$JUnit-END$ return suite; } }

 

WifiSettingTest.java

package com.example.wifitoggle.test; //import Forwarding; import junit.framework.Assert; import junit.framework.TestCase; import android.app.Activity; import android.content.Intent; import android.net.wifi.WifiManager; import android.util.Log; import android.os.Bundle; import android.content.Context; import android.test.AndroidTestCase; public class WifiSettingTest extends AndroidTestCase { private WifiManager mWifiManager = null; private final int TEST_COUNT = 10; private final int INTERVAL_DELAY_MS = 2000; protected void setUp() throws Exception { super.setUp(); Context serviceManager = getContext(); mWifiManager = (WifiManager) serviceManager.getSystemService(Context.WIFI_SERVICE); } private void sleep(int ms) { try { Thread.sleep(ms); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void testTurnOnOff() { boolean enable = false; boolean result = false; for(int i = 0; i < TEST_COUNT; i++) { final int WAIT_TIMEOUT_S = 30; int wifiState = mWifiManager.getWifiState(); if(wifiState == WifiManager.WIFI_STATE_ENABLED) { result = false; Log.w("WIFI TEST", "Turning wifi off..."); mWifiManager.setWifiEnabled(false); for(int j = 0; j < WAIT_TIMEOUT_S; j ++) { sleep(1000); wifiState = mWifiManager.getWifiState(); if(wifiState == WifiManager.WIFI_STATE_DISABLED) { result = true; Log.w("WIFI TEST", "Turning wifi off success."); break; } else if (wifiState == WifiManager.WIFI_STATE_UNKNOWN) { Log.w("WIFI TEST", "Turning wifi off failed."); break; } } } else if (wifiState == WifiManager.WIFI_STATE_DISABLED) { result = false; Log.w("WIFI TEST", "Turning wifi on..."); mWifiManager.setWifiEnabled(true); for(int j = 0; j < WAIT_TIMEOUT_S; j ++) { sleep(1000); wifiState = mWifiManager.getWifiState(); if(wifiState == WifiManager.WIFI_STATE_ENABLED) { result = true; Log.w("WIFI TEST", "Turning wifi on success."); break; } else if (wifiState == WifiManager.WIFI_STATE_UNKNOWN) { Log.w("WIFI TEST", "Turning wifi on failed."); break; } } } Assert.assertTrue(result); sleep(INTERVAL_DELAY_MS); } } }

 

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>

 

 

2. Eclipse 环境下的sdk版本 可能与实际 Android src 不兼容。 所以测试 WIFI SERVICE 这类framework 层代码,

需要将 测试程序放到Android 环境下编译,而不是在Eclipse 下编译。

实现这一步,只要简单的写一个Android.mk 然后将测试程序 目录拷贝到 packages/app/ 下, 再运行 mm 编译即可.

Android.mk

LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) # We only want this apk build for tests. LOCAL_MODULE_TAGS := tests # Also link against our own custom library. LOCAL_JAVA_LIBRARIES := android.test.runner #LOCAL_JAVA_LIBRARIES += com.android.settings # Include all test java files. LOCAL_SRC_FILES := $(call all-java-files-under, src) LOCAL_PACKAGE_NAME := wifitoggletest #LOCAL_INSTRUMENTATION_FOR := wifitoggle LOCAL_CERTIFICATE := platform include $(BUILD_PACKAGE)

 

# cd $ANDROID_PATH

# source ./build/envsetup.sh

# cd packages/app/WifiToggleTest
# mm

 

 

3.

wifitoggletest.apk 生成后就可以通过instrument 和 adb协议来测试 WIFI_SERVICE 功能了。 
# croot
# adb uninstall com.example.wifitoggle.tests (It is not necessary for the first time running.)
# adb install ./out/target/product/eagle/data/app/wifitoggletest.apk
# adb shell am instrument -w com.example.wifitoggle.tests/android.test.InstrumentationTestRunner

 

 

 

更多相关文章

  1. Android(安卓)数据绑定视图 dataBinding
  2. 利用Handler定时更新Android(安卓)UI
  3. [android]android性能测试命令行篇
  4. 搭建 android 代码镜像服务
  5. android源代码下载
  6. android 单选框
  7. Android(安卓)zxing change orientation to portrait
  8. How To Open An URL In Android’s Web Browser
  9. Ubunu下搭建android NDK环境

随机推荐

  1. Intent Server Environment
  2. android中获取SHA1的代码
  3. android 网络
  4. Android中声音处理流程
  5. android中重写onTouchEvent分别实现点击
  6. android渲染网页时onPageFinished不触发
  7. Android 自定义View 横向翻页
  8. Android圆环形自定义进度条控件的绘制
  9. Android软键盘弹出不影响布局的方法
  10. android查看每个app的内存占用情况