Android Studio 单元测试
2016-07-18 15:09
429 查看
在功能测试有时要通过Log来验证,每次编译都需要时间,对于一些功能测试可以用Android Studio自带的单元测试功能进行调试;
在新建项目时,Android studio就已经集成了二个单元测试文件夹(androidTest和test目录 ):
![](https://images2015.cnblogs.com/blog/909970/201607/909970-20160721104027826-843991896.png)
测试用例
如果测试的代码没有使用android Sdk中的环境,可在test目录下新建一个测试类;
一、Test测试模式
因as自动生成了一个ExampleUnitTest类,就在此类中新建测试方法如下:
测试方法即public void的方法,并且加上@Test注解,这是Junit的标准用法;
public class ExampleUnitTest {
@Test
public void addition_isCorrect() throws Exception {
assertEquals(4, 2 + 2);
}
@Test
public void getRequest(){
OkhttpDemo okhttpDemo=new OkhttpDemo();
okhttpDemo.getRequest();
}
public class OkhttpDemo {
String url = "http://www.wooyun.org";
final OkHttpClient client = new OkHttpClient();
.get()
.tag(this)
.url(url)
.build();
try {
Response response = null;
response = client.newCall(request).execute();
if (response.isSuccessful()) {
// Log.i("WY", "打印GET响应的数据:" + response.body().string());
System.out.print(response.body().string());
} else {
throw new IOException("Unexpected code " + response);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
右击要测试的方法
![](https://images2015.cnblogs.com/blog/909970/201607/909970-20160721104029060-1419221114.png)
显示结果如下:
![](https://images2015.cnblogs.com/blog/909970/201607/909970-20160721104030388-173746847.png)
如有打印语句,结果却显示如下:
![](https://images2015.cnblogs.com/blog/909970/201607/909970-20160721104031201-1443361355.png)
这时就要检查代码中是否含有android 代码!
注意该Test模式与AndroidTest模式(extends InstrumentationTestCase 测试方式)下开线程,是不能打印出日志!!Activity模式( extends ActivityInstrumentationTestCase2<MainActivity>)完全,模拟Actvity,可以运行!
二.AndroidTest模式
代码格式
测试类名 extends InstrumentationTestCase{}
其他代码与Test类似,参考Test模式!
注意其中测试方法要以test开头!
三、Android Activity模式
代码格式
测试类名 extends ActivityInstrumentationTestCase2<要测试的Activity>{}
![](https://images2015.cnblogs.com/blog/909970/201607/909970-20160721104032326-2125505788.png)
运行测试报错如下:
![](https://images2015.cnblogs.com/blog/909970/201607/909970-20160721104034247-1307700813.png)
把用工具自动生成的构造器改成不带参数的;
![](https://images2015.cnblogs.com/blog/909970/201607/909970-20160721104035263-2079351415.png)
最后,就是可以直接在 class中写 main()方法进行功能测试(不能含有android方面的代码):
![](https://images2015.cnblogs.com/blog/909970/201607/909970-20160721104035997-260027548.png)
右键方法名,如下图:
![](https://images2015.cnblogs.com/blog/909970/201607/909970-20160721104036841-2070503854.png)
Android studio 在功能与方便上面 真是 完爆 Eclipse啊!
运行 OK;
来自为知笔记(Wiz)
在新建项目时,Android studio就已经集成了二个单元测试文件夹(androidTest和test目录 ):
![](https://images2015.cnblogs.com/blog/909970/201607/909970-20160721104027826-843991896.png)
测试用例
如果测试的代码没有使用android Sdk中的环境,可在test目录下新建一个测试类;
一、Test测试模式
因as自动生成了一个ExampleUnitTest类,就在此类中新建测试方法如下:
测试方法即public void的方法,并且加上@Test注解,这是Junit的标准用法;
public class ExampleUnitTest {
@Test
public void addition_isCorrect() throws Exception {
assertEquals(4, 2 + 2);
}
@Test
public void getRequest(){
OkhttpDemo okhttpDemo=new OkhttpDemo();
okhttpDemo.getRequest();
}
public class OkhttpDemo {
String url = "http://www.wooyun.org";
final OkHttpClient client = new OkHttpClient();
.get()
.tag(this)
.url(url)
.build();
try {
Response response = null;
response = client.newCall(request).execute();
if (response.isSuccessful()) {
// Log.i("WY", "打印GET响应的数据:" + response.body().string());
System.out.print(response.body().string());
} else {
throw new IOException("Unexpected code " + response);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
右击要测试的方法
![](https://images2015.cnblogs.com/blog/909970/201607/909970-20160721104029060-1419221114.png)
显示结果如下:
![](https://images2015.cnblogs.com/blog/909970/201607/909970-20160721104030388-173746847.png)
如有打印语句,结果却显示如下:
![](https://images2015.cnblogs.com/blog/909970/201607/909970-20160721104031201-1443361355.png)
这时就要检查代码中是否含有android 代码!
注意该Test模式与AndroidTest模式(extends InstrumentationTestCase 测试方式)下开线程,是不能打印出日志!!Activity模式( extends ActivityInstrumentationTestCase2<MainActivity>)完全,模拟Actvity,可以运行!
二.AndroidTest模式
代码格式
测试类名 extends InstrumentationTestCase{}
其他代码与Test类似,参考Test模式!
注意其中测试方法要以test开头!
三、Android Activity模式
代码格式
测试类名 extends ActivityInstrumentationTestCase2<要测试的Activity>{}
![](https://images2015.cnblogs.com/blog/909970/201607/909970-20160721104032326-2125505788.png)
运行测试报错如下:
![](https://images2015.cnblogs.com/blog/909970/201607/909970-20160721104034247-1307700813.png)
把用工具自动生成的构造器改成不带参数的;
![](https://images2015.cnblogs.com/blog/909970/201607/909970-20160721104035263-2079351415.png)
最后,就是可以直接在 class中写 main()方法进行功能测试(不能含有android方面的代码):
![](https://images2015.cnblogs.com/blog/909970/201607/909970-20160721104035997-260027548.png)
右键方法名,如下图:
![](https://images2015.cnblogs.com/blog/909970/201607/909970-20160721104036841-2070503854.png)
Android studio 在功能与方便上面 真是 完爆 Eclipse啊!
运行 OK;
来自为知笔记(Wiz)
相关文章推荐
- android之版本控制工具Tortoisegit常用功能和用法(Git分支与合并)
- android studio NDK使用,编译c生成.so实践记录
- android权限
- Android Drawable、Bitmap、byte[]之间的转换
- MVP模式在Android项目中的使用
- 升级Android studio 2.1.2 签名出错
- butterknife:8.0.1 在android studio 中可以注册,运行时报空指针问题
- Android EventBus实战 没听过你就out了
- java.lang.NullPointerException at android.support.v4.app.FragmentManagerImpl.sav
- Error: Error parsing F:\android-sdk_r24.3.4-windows\android-sdk-windows\system-images\android-23\and
- android seekbar 注意事项
- 41.计算两个时间之间的间隔时间
- DatePickerDialog和TimePickerDialog的简单使用
- Android animation 基础
- Android -- 获取系统当前时间
- Android 限制edittext 整数和小数位数 过滤器
- proguard 不混淆内部类的方法
- Android GradientDrawable类的详解,设置activity的背景颜色渐变效果
- android studio complie依赖的包下载在哪个路径
- RadioGroup和RadioButton的简单使用