当前位置:   article > 正文

android的单元测试,Android 单元测试(Button 点击测试)

android mock测试按键点击button

android源码中引入了java单元测试的框架(android源码目录:libcore\junit\src\main\java\junit\framework中可见),然后在java单元测试框架的基础上扩展属于android自己的测试框架。android具体框架类的关系图如下:

0818b9ca8b590ca3270a3433284dd417.png

从上图的类关系图中可以知道,通过android测试类可以实现对android中相关重要的组件进行测试(如Activity,Service,ContentProvider,甚至是application)。本次测试的是activity中的按键点击事件的测试用例:

一、新建一个 Android application project 项目--->MyButton

布局文件很简单 就一个按键控件:

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical" >

android:layout_width="match_parent"

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) {

super.onCreate(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

super.onCreate(savedInstanceState);

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工程项目结构上没什么大的区别,主要是在AndroidManifest.xml中有变化,如下:

package="com.example.mybutton.test"

android:versionCode="1"

android:versionName="1.0" >

android:name="android.test.InstrumentationTestRunner"

android:targetPackage="com.example.mybutton" />

android:icon="@drawable/ic_launcher"

android:label="@string/app_name" >

这个配置文件随着建立测试项目工程自动配置不需要我们动手去配置。在AndroidManifest.xml注册了相关的测试环境(这些是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.findViewById(com.example.mybutton.R.id.btn_test);

}

//测试按钮

public void testLogin()

{

//开新线程,并通过该线程在实现在UI线程上执行操作

mInstrumentation.runOnMainSync(new Runnable()

{

@Override

public void run()

{

// TODO Auto-generated method stub

btn.requestFocus();

btn.performClick();

}

});

}

}

这里的测试方法

public void testLogin() 必须是 test开头 即:test + "xxxxx"

到此为止 测试项目就写好了,下一步就是可以运行测试了!!

七、运行测试:

启动android模拟器(也可以通过android手机)----->运行android工程----->在测试工程中选中测试类ButtonTest---->鼠标右键--->Run As---->Android Junit Test。这样,测试结果就可以在eclipse的Junit视图上显示了,如下图:

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

测试之后打印出来的信息:

"Android UnitTest","success!!!!!"

0818b9ca8b590ca3270a3433284dd417.png

按键的测试案例就到此了,贴上项目代码下载地址:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/591433
推荐阅读
相关标签
  

闽ICP备14008679号