android的单元测试,Android单元测试(Button点击测试)android源码中引⼊了java单元测试的框架(android源码⽬录:libcore\junit\src\main\java\junit\framework中可见),然后在java单元测试框架的基础上扩展属于android⾃⼰的测试框架。android具体框架类的关系图如下:
从上图的类关系图中可以知道,通过android测试类可以实现对android中相关重要的组件进⾏测试(如
Activity,Service,ContentProvider,甚⾄是application)。本次测试的是activity中的按键点击事件的测试⽤例:
⼀、新建⼀个 Android application project 项⽬--->MyButton
布局⽂件很简单 就⼀个按键控件:
xmlns:tools="schemas.android/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
android:layout_width="match_parent"
android模拟点击android:layout_height="wrap_content"
android:gravity="center"
android:text="@string/hello_world" />
android:id="@+id/btn_test"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="按键的单元测试"
/>
⼆、MainAtivity类⽂件代码:
很简单就是⼀个按键点击跳转动作,
public class MainActivity extends Activity {
private Button btnTest;
@Override
protected void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.activity_main);
btnTest = (Button)findViewById(R.id.btn_test);
btnTest.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Log.e("Android UnitTest","success");
Intent i = new Intent(MainActivity.this,TestSuccess.class);
i.putExtra("userName", "你好 我是程序猿");
i.putExtra("what", "程序猿测试Android单元测试"); startActivity(i);
}
});
}
}
三、
TestSuccess.class 的代码:
public class TestSuccess extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
setContentView(R.layout.success);
Intent i = getIntent();
String userName = i.getStringExtra("userName");
String what = i.getStringExtra("what");
Log.e("TestSuccess", userName + "\n" + what);
TextView tv = (TextView)findViewById(R.id.tv);
tv.setText(userName + "\n" + what);
}
}
四、
TestSuccess 类的布局⽂件:
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="#086767"
>
android:id="@+id/tv"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:text="测试成功"
/>
五、创建测试项⽬⼯程:
选中其所在的android⼯程---->⿏标右键----->new---->Android Test Project----->输⼊测试⼯程名--->next----->选择被测试的⽬标android⼯程(此处为MyButton所在的android⼯程)。这样,⼀个测试⼯程就创建完成了。
通过eclipse创建⾃动⽣成的测试⼯程项⽬和android⼯程项⽬结构上没什么⼤的区别,主要是在l中有变化,如下:
package="st"
android:versionCode="1"
android:versionName="1.0" >
android:name="st.InstrumentationTestRunner"
android:targetPackage="button" />
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
这个配置⽂件随着建⽴测试项⽬⼯程⾃动配置不需要我们动⼿去配置。在l注册了相关的测试环境(这些是android独有的):实现使⽤相关的运⾏测试类库,中的targetPackage为被测试类所在的包。
六、编写测试按键代码:
public class ButtonTest extends ActivityInstrumentationTestCase2{
private Instrumentation mInstrumentation;
private MainActivity mBtnTest;
public ButtonTest() {
super(MainActivity.class);
// TODO Auto-generated constructor stub
}
private Button btn;
//重写setUp⽅法,在该⽅法中进⾏相关的初始化操作
@Override
protected void setUp() throws Exception{
// TODO Auto-generated method stub
super.setUp();
mInstrumentation = getInstrumentation();
/
/获取被测试的FxLoginActivity
mBtnTest = getActivity();
btn = (Button)mBtnTest.button.R.id.btn_test);
}
//测试按钮
public void testLogin()
{
//开新线程,并通过该线程在实现在UI线程上执⾏操作
mInstrumentation.runOnMainSync(new Runnable()
{
@Override
public void run()
{
// TODO Auto-generated method stub
btn.performClick();
}
});
}
}
这⾥的测试⽅法
public void testLogin() 必须是 test开头 即:test + "xxxxx"
到此为⽌ 测试项⽬就写好了,下⼀步就是可以运⾏测试了!!
七、运⾏测试:
启动android模拟器(也可以通过android⼿机)----->运⾏android⼯程----->在测试⼯程中选中测试类ButtonTest---->⿏标右键--->Run As---->Android Junit Test。这样,测试结果就可以在eclipse的Junit视图上显⽰了,如下图:
测试之后打印出来的信息:
"Android UnitTest","success"
按键的测试案例就到此了,贴上项⽬代码下载地址:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论