- getActivity()
- setActivityInitialTouchMode():是公共的方法,初始化时被调用,为了让点击或者滑动等方法生效,必须将TouchMode的布尔值设成false,接下来所有的方法再按照正常的点击或者滑动向下进行。
- setActivityIntent()
二、被测工程讲解:
对这个Activity做一个onCreate的重写:
Spinner spinner = (Spinner) findViewById(R.id.Spinner01); //定义一个Spinner控件
this.mAdapter = ArrayAdapter.createFromResource(this,R.array.Planets,android.R.layout.simple_spinner_dropdown_item); //对于list或者类似菜单一样滚动的控件来讲都要设置Adapter,这个Adapter相当于把菜单中的所有项看成一个整体
OnItemSelectedListener spinnerListenr = new myOnItemSelectedListener(this, this.mAdapter); //创建一个对象监听刚刚创建的Adapter
spinner.setOnItemSelecedListener(spinnerListener); //将这个监听器绑定设置在刚刚创建的spinner对象上
三、创建测试用例构造函数
import被测工程,按照测试框架需要建造一个SpinneActivity构造函数,告诉测试程序所指定的包名和测试的Activity(super后的两个参数)。
mActivity = getActivity();
mSpinner = (Spinner) mActivity.findViewById(com.android.example.spinner.R.id.Spinner01); //绑定被测工程的一个控件
mPlanetData = mSpinner.getAdapter(); //测试工程与被测工程的控件对象绑定
四、测试函数
assertTrue(mSpinner.getOnItemSelectedListener() !=null); // 是否设置了一个Listener,这个Listener是否存在
assertTrue(mPlanetData != null); //判断Spinner Adaper的对象是否为空
assertEquals(mPlanetData.getCount(),ADAPTER_COUNT); //Spinner Adapter的总数
五、SpinnerUI的测试
mActivity.runOnUiThread() //对于被测对象UI上的测试来讲,都要跑在一个UI线程上,这里起了一个新的UI线程
public void run() //在UI线程上跑的测试
mSpinner.requestFocus(); //对一个控件做某些操作,首先要聚焦到控件上
mSpinner.setSelection(INITIAL_POSITION);
mPos = mSpinner.getSelectedItemPosition(); //取得当前选择的Item的位置
mSelection = (String)mSpinner.getItemAtPosition(mPos); //取得在mPos这个位置的字符串
TextView resultView = (TextView) mActivity.findViewById(
com.android.example.spinner.R.id.SpinnerResult); //在被测程序有一个TextView,新建对象resultView,与被测控件做关联
String resultText = (String) resultView.getText(); //将该控件的值赋给resultText
assertEquals (resultText,mSelection); //spanner上选择的值与resultView这个控件的值做比较,选择的值要显示在resultView这个控件上
六、测试方法testStatePause
Instrumentation mInstr = this.getInstrumentation(); //创建一个Instrumentation对象,该对象能用Instrumentation下的所有方法
mActivity.setSpinnerPosition(TEST_PAUSE_POSITION); //设置位置
mActivity.setSpinnerSelection(TEST_STATE_PAUSE_SELECTION); //设置字符串
mInstr.callActivityOnPause(mActivity); //对Activity做onPause操作
mActivity.setSpinnerPosition(0); // 设位置为0
mActivity.setSpinnerSelection(""); //
mInstr.callActivityOnResume(mActivity); 对Activity做onResume操作
int currentPositon = mActivity.getSpinnerPosition();
String currentSelection = mActivity.getSpinnerSelection(); //再获取位置和字符串
对比onPause和onResume两个操作前后位置和字符串的值
需要将测试工程中创立的对象用findViewById与主程序apk中的控件进行绑定,有了关联后再针对测试对象做操作,这样操作才会生效,根据用例测什么地方做什么操作,最后会得到两个值或两个状态,对这两个值或状态做比较。