您的位置:首页 > 移动开发 > Android开发

简单谈谈对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应该都会自带有。

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: