我的AndroidStudio
我的AndroidStudio是2.1.1版本,但是进行单元测试应该很早的版本就可以了,至少可以追溯到1.0
注意事项
当你google查找AndroidStudio单元测试时,有大量的资料教程,但是都不完整,至少跟着教程一步步的是无法看到自己想看的效果的。AndroidStudio自带的单元测试功能是不需要修改gradle或者AndroidManifest.xml文件的。直接编写测试用例即可。
编写测试用例步骤
以下以一个由AndroidStudio一步步创建的全新工程为例
在src目录下会包含三个目录:
- androidTest.java.[包名]
main.java.[包名]
test.java.[包名]
- mian目录下为项目代码,androidTest目录下为编写Android测试用例使用,test目录下未编写Java测试用例使用。
gradle文件
- 已自动增加
testCompile 'junit:junit:4.12'
用于Java编写执行Java测试用例。
编写Java测试用例
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
右键菜单执行测试用例
编写Android测试用例
因为项目创建时自动在main.java.[包名]创建了MainActivity.java,一个最简洁显示HelloWord的页面。
先运行它在模拟器上安装HelloWord。
然后我在androidTest.java.[包名]文件夹中添加了一个类MainActivityTest,该类派生自ActivityInstrumentationTestCase2,并写了一个方法,完整代码如下:
import android.test.ActivityInstrumentationTestCase2;
import android.widget.TextView;
public class MainActivityTest extends ActivityInstrumentationTestCase2<MainActivity> {
private MainActivity mMainActivity;
private TextView mTextView;
public MainActivityTest() {
super(MainActivity.class);
}
@Override
protected void setUp() throws Exception {
super.setUp();
//Sets the initial touch mode for the Activity under test. This must be called before
//getActivity()
setActivityInitialTouchMode(true);
//Get a reference to the Activity under test, starting it if necessary.
mMainActivity = getActivity();
//Get references to all views
mTextView = (TextView) mMainActivity.findViewById(R.id.tv_text);
}
/**
* Tests the preconditions of this test fixture.
*/
public void testPreconditions() {
System.out.print("ssss111");
assertNotNull("mTextView is null", mTextView);
}
@Override
protected void tearDown() throws Exception{
mMainActivity.finish();
}
}
右键运行它,它会验证页面上是否存在Hello Word!这文本所在的控件
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12