软件测试

收藏 / 订阅

Android_TestCase(测试用例)

  基本Activity 测试用例

  创建一个测试用例

  在对应要测试Activity的package路径下新建test包,

  

项目工程结构.png

  在改test路径下新建一个FirstActivityTest类(类名+Test后缀)继承ActivityTestCase

  public class FirstActivityTest extends ActivityInstrumentationTestCase2<FirstActivity> {

  private FirstActivity mFirstActivity;

  private TextView mFirstTestTextView;

  public FirstActivityTest() {

  super(FirstActivity.class);

  }

  }

  构造函数是由测试用的Runner调用,用于初始化测试类的。

  测试会在运行任何其它测试方法之前自动执行setUp(Runner调用)方法,可以对一些对象进行赋值

  @Override

  protected void setUp() throws Exception {

  super.setUp();

  mFirstActivity = getActivity();

  mFirstTestTextView = (TextView) mFirstActivity.findViewById(R.id.first_test_textview);

  }

  增加一个测试前提检查想要测试的对象是否已经正确地初始化

  public void testPreconditions() {

  assertNotNull("mFirstTestActivity is null", mFirstActivity);

  assertNotNull("mFirstTestText is null", mFirstTestTextView);

  }

  测试方法测试默认文本是否和 strings.xml 资源中定义的文本一样。

  public void testFirstTestTextView_labelText() {

  final String expected = mFirstActivity.getString(R.string.hello_world);

  final String actual = mFirstTestTextView.getText().toString();

  assertEquals("mFirstTestText contains wrong text", expected, actual);

  }

  manifest.xml中注册测试用例

<application

android:allowBackup="true"

android:icon="@drawable/ic_launcher"

android:label="@string/app_name"

android:theme="@style/AppTheme" >

<uses-library android:name="android.test.runner" /><!-- 加入测试库 -->

<activity

android:name="com.speed.androidtest.FirstActivity"

android:label="@string/app_name" >

<intent-filter>

<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />

</intent-filter>

</activity>

</application>

<instrumentation

android:name="android.test.InstrumentationTestRunner"

android:label="Tests for com.speed.androidtest"

android:targetPackage="com.speed.androidtest" /><!-- targetPackage 测试类的路径 -->

  运行测试用例

  项目工程右键Run as ==>Android JUint Test,安装完成后会自动执行测试用例,testFirstTestTextView_labelText执行判断

 

test_success.png

  修改main_activity.xml中的

  <TextView

  android:id="@+id/first_test_textview"

  android:layout_width="wrap_content"

  android:layout_height="wrap_content"

  android:text="hello" />

  执行结果

  检测到textview中的文本和资源中定义的不一致

  UI组件测试, Button 点击

  setUp函数编写

  @Override

  protected void setUp() throws Exception {

  super.setUp();

  setActivityInitialTouchMode(true);

  mSecondTestUIActivity = getActivity();

  mClickMeButton = (Button) mSecondTestUIActivity.findViewById(R.id.second_test_ui_btn);

  }

  把touch mode设置为真可以防止在执行编写的测试方法时,人为的UI操作获取到控件的焦点(比如,一个按钮会触发它的点击监听器)。确保在调用getActivity()之前调用setActivityInitialTouchMode(true);

喜欢 (88) or分享 (0)
首页  上一页  12345678910  下一页 尾页 共73条记录 4/10

网友评论:7

  1. 小编 1年前 (2015-03-22) #5

    软件测试入门 :mrgreen:

留言主题 *

您的姓名 *

电子信箱:

电话号码:

请你留言: