單元測試 網絡接口測試

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<Scheduler, Scheduler>() {
            @Override
            public Scheduler apply(@NonNull Scheduler scheduler) throws Exception {
                return Schedulers.trampoline();
            }
        });
        RxAndroidPlugins.reset();
        RxAndroidPlugins.setMainThreadSchedulerHandler(new Function<Scheduler, Scheduler>() {
            @Override
            public Scheduler apply(@NonNull Scheduler scheduler) throws Exception {
                return Schedulers.trampoline();
            }
        });
        RxAndroidPlugins.reset();
        RxJavaPlugins.setComputationSchedulerHandler(new Function<Scheduler, Scheduler>() {
            @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 方法下 調用自己項目中的網絡請求方法 測試是否跑通鏈路。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章