简单谈谈对android studio 的单元测试
2017-03-03 10:32
387 查看
单元测试 单元测试其实是为了方便我们队代码正确性的检验,无论从事何种开发,在你写代码的过程中都是写一段验证一段,但是做Android开发的时候大多时候都是直接运行一次程序,然后一步一步点击到你需要测试的地方,其实Android studio给我们提供有单元测试的功能。不管是java代码还是Android中的某个activity 都可以测试。其中androidTest中的测试类是用于测试与某个activity界面里面的流程的,Test中的测试类是用于测试你的java代码的逻辑是否正确的。 下面我们分别做个测试: 我们先测试一段java代码:
package com.example.chenzhu.myprojectblog; import org.junit.Test; /** * Example local unit test, which will execute on the development machine (host). * * @see <a href="http://d.android.com/tools/testing">Testing documentation</a> */ public class ExampleUnitTest { @Test public void addition_isCorrect() throws Exception {
int a =10;int b=20; System.out.println("TestActivity.....a+b="+(a+b));}} 我们先做个简单的打印,直接运行测试类后上log图:下面 我们在来测试我们的一个Activity: 我们需要测试的activity代码:
package com.example.chenzhu.myprojectblog; import android.os.Handler; import android.os.Message; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.Toast; public class MyHandleActivity extends AppCompatActivity { Handler handler = new Handler(){ //接受消息并且处理消息 @Override public void handleMessage(Message msg) { super.handleMessage(msg); if (msg.what==1) { Log.d("TestActivity","handler........come...msg.what===1"); Toast.makeText(MyHandleActivity.this, "耗时操作开始" + msg.what, Toast.LENGTH_SHORT).show(); }else { Log.d("TestActivity","handler........come...msg.what===2"); Toast.makeText(MyHandleActivity.this, "耗时操作结束可以更新UI" + msg.what, Toast.LENGTH_SHORT).show(); } } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_my_handle); Log.d("TestActivity","onCreate.......MyHandleActivity"); Message msg = new Message();//建立一个消息 msg.what=1; handler.sendMessage(msg);//发送一个消息 new MyTheard().start(); } @Override protected void onDestroy() { super.onDestroy(); Log.d("TestActivity","onDestroy.......MyHandleActivity"); } //模拟耗时操作 class MyTheard extends Thread{ @Override public void run() { super.run(); try { sleep(5); //模拟耗时操作结束 发送消息 Message msg = new Message(); msg.what=2; handler.sendMessage(msg); } catch (InterruptedException e) { e.printStackTrace(); } } } }这里写我们测试类里面的代码注意是在AndroidTest里面:
package com.example.chenzhu.myprojectblog; import android.content.Context; import android.content.Intent; import android.support.test.InstrumentationRegistry; import android.support.test.runner.AndroidJUnit4; import android.util.Log; import org.junit.Test; import org.junit.runner.RunWith; import static org.junit.Assert.*; /** * Instrumentation test, which will execute on an Android device. * * @see <a href="http://d.android.com/tools/testing">Testing documentation</a> */ @RunWith(AndroidJUnit4.class) public class ExampleInstrumentedTest { private Context appContext; @Test public void useAppContext() throws Exception { // Context of the app under test. appContext = InstrumentationRegistry.getTargetContext(); assertEquals("com.example.chenzhu.myprojectblog", appContext.getPackageName()); startest(); } public void startest(){ Intent intent = new Intent(appContext,MyHandleActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); appContext.startActivity(intent); Log.d("TestActivity ","start....."); } }同样直接运行测试类后,看看我们的log打印: 总结下:我们在开发过程中会遇到一些需要测试的代码和逻辑,这样的话我们就可以用我们工具自带的测试类,简单又方便,这里给大家做个分享,希望大家喜欢。 需要注意的是有些Android studio中没有依赖 我们需要加上
androidTestCompile 'junit:junit:4.12' testCompile 'junit:junit:4.12'但是现在的Android studio应该都会自带有。
相关文章推荐
- 简单谈谈android studio 的单元测试
- 简单谈谈android studio 的单元测试
- 在Android Studio进行“简单配置”单元测试(Android Junit)
- 谈谈单元测试....
- 用Visual studio2005的单元测试框架实现一个简单的计算器
- [翻译]简单谈谈事件与委托 (转)
- 谈谈TCP和UDP的一些简单应用
- 看了,容易被忽略的细节(1):config文件的使用 ,我也谈谈这个简单的问题
- 由浅至深,谈谈.NET混淆原理 (二) 最简单的混淆
- [翻译]简单谈谈事件与委托
- 谈谈TCP和UDP的一些简单应用
- 初学者看过来:简单谈谈 C/C++ 递归的思想,实现,以及和循环的关系。
- 简单谈谈组件及COM---转载
- 简单谈谈跳板的隐藏
- 初学者看过来:简单谈谈 C/C++ 递归的思想,实现,以及和循环的关系。
- OI之外的一些东西:简单谈谈排序网络
- 简单谈谈事件与委托
- Visual Unit:单元测试原来可以如此简单
- NUnit的使用(1)——创建一个简单的单元测试
- [翻译]简单谈谈事件与委托