单元测试 网络接口测试

public class DataManagerTest {

    private Context mContext;
    private String TAG = DataManagerTest.class.getSimpleName();

    @Before
    public void setUp() throws Exception {
        mContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
        initRX();

    }

    private void initRX() {

        //这里是核心 需要把项目中使用io 、computation调度转换为trampoline
        RxJavaPlugins.reset();
        RxJavaPlugins.setIoSchedulerHandler(new Function() {
            @Override
            public Scheduler apply(@NonNull Scheduler scheduler) throws Exception {
                return Schedulers.trampoline();
            }
        });
        RxAndroidPlugins.reset();
        RxAndroidPlugins.setMainThreadSchedulerHandler(new Function() {
            @Override
            public Scheduler apply(@NonNull Scheduler scheduler) throws Exception {
                return Schedulers.trampoline();
            }
        });
        RxAndroidPlugins.reset();
        RxJavaPlugins.setComputationSchedulerHandler(new Function() {
            @Override
            public Scheduler apply(@NonNull Scheduler scheduler) throws Exception {
                return Schedulers.trampoline();
            }
        });
    }

RxJava调度程序的简要介绍。

  • Schedulers.io() –用于执行非CPU密集型操作,例如进行网络调用,读取磁盘/文件,数据库操作等。此操作维护一个池线程数。

  • Schedulers.newThread() –使用此功能,每次计划任务时都会创建一个新线程。通常建议不要使用调度程序,除非运行时间很长。通过newThread()创建的线程将不会被重复使用。

  • Schedulers.computation() –此计划表可用于执行CPU密集型操作,例如处理大量数据,位图处理等。使用此计划程序创建的线程数完全取决于可用的CPU内核数量。

  • Schedulers.single() –此调度程序将按添加任务的顺序执行所有任务。当需要顺序执行时可以使用它。

  • Schedulers.immediate() –该调度程序通过阻塞主线程以同步方式立即执行任务。

  • Schedulers.trampoline()–以先进先出的方式执行任务。通过将后台线程数限制为一个,所有调度的任务将一一执行。

  • Schedulers.from() –通过限制要创建的线程数,这使我们可以从执行程序创建调度程序。当线程池被占用时,任务将排队。

然后就可以在@test 方法下 调用自己项目中的网络请求方法 测试是否跑通链路。

你可能感兴趣的:(单元测试 网络接口测试)