简单谈谈对android studio 的单元测试

本文介绍如何使用Android Studio进行单元测试,包括对Java代码和Activity的测试方法。通过具体示例展示了如何编写测试类并运行,以确保代码逻辑的正确性和Activity流程的顺畅。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

                                          单元测试

    单元测试其实是为了方便我们队代码正确性的检验,无论从事何种开发,在你写代码的过程中都是写一段验证一段,但是做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应该都会自带有。

















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值