Android Studio 单元测试测试工具

Android Studio自带的单元测试功能是不需要修改gradle或者AndroidManifest.xml文件的。直接编测试用例即可。

从我们项目的开发进度和开发工具来看,Android Studio一直是我们首选的开发工具(目前为止是我们学过功能最强大,实用,专业的工具)

 

在Android Studio中进行单元测试并不需要什么插件或者过多的配置,Android Studio本身就集成了测试环境,无论是单纯的java代码单元测试还是依赖Android SDK的Android代码单元测试,都能得心应手。
首先在你的gradle中加入Junit的依赖,注意这里的依赖方式是测试期间的依赖(testCompile):

dependencies {
    testCompile 'junit:junit:4.12'
}

再在项目的app/src下面和main文件夹同级的建立androidTest和test目录,并且分别在各自目录下建议java/com/xxx/xxx类似的和主工程一致的包名目录,建立好后,你的项目在Android Studio的Project中应该是这样的:project structure;

在接下来就是编写测试代码了。

Android测试用例我们可以

  1. 在androidTest下新建一个java类,并且继承自InstrumentationTestCase
  2. 编写一个public void的方法,但是必须要是方法名以test打头,比如testPublishSubject,并不需要@Test注解

public class TestSubject extends InstrumentationTestCase {
    private static final String LOG_TAG = "test";

    public void testPublishSubject() {
        PublishSubject<String> stringPublishSubject = PublishSubject.create();
        stringPublishSubject.subscribe(new Observer<String>() {
            @Override
            public void onCompleted() {
                Log.d(LOG_TAG, "Observable completed");
            }

            @Override
            public void onError(Throwable e) {

            }

            @Override
            public void onNext(String s) {
                Log.d(LOG_TAG, "Observer consumed " + s);
            }
        });
        stringPublishSubject.onNext("hello world");
        stringPublishSubject.onCompleted();
    }
}

本例运行后,会在Android Monitor中以test这个LOGTAG打出和上一节一样的Log

Android Studio也提供了测试单个Activity或者多个Activities的测试用例方法基类,比如ActivityInstrumentationTestCase2,步骤为

  1. 在androidTest下新建一个java类,并且继承自ActivityInstrumentationTestCase2,传入需要测试的Activity的类到泛型
  2. 复写setUp方法,获得Context
  3. 编写一个public void的方法,但是必须要是方法名以test打头,比如testStart,并不需要@Test注解

public class TestActivity extends ActivityInstrumentationTestCase2<MainActivity> {

    private Context ctx;

    public TestActivity() {
        super(MainActivity.class);
    }

    @Override
    protected void setUp() throws Exception {
        super.setUp();
        ctx = getActivity().getApplicationContext();
    }

    public void testStart() {
        Intent intent = new Intent(ctx, MainActivity.class);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        ctx.startActivity(intent);
    }
}

运行这个测试用例,你会发现模拟器上单独启动了这个Activity

 由于我们组项目正在研发阶段,所以只能给出Android studio自带的测试工具还有测试代码的模版了。

posted @ 2019-06-04 22:16  咻秀咻大魔王  阅读(317)  评论(0)    收藏  举报