2016-03-30 14 views
1

私はRobolectricランナーでテストを行っています。テスト対象のコードは、それがメインスレッドで実行されていない確認しますAndroidのRoboelectricのバックグラウンドスレッドでapiを呼び出す方法

if (Looper.getMainLooper().getThread() == java.lang.Thread.currentThread()) { 
    new IllegalStateException("Method called on the UI thread"); 
} 

Robolectricテストは、この例外を発生させ、そして私はそれを望んでいません。 Robolectric.getBackgroundScheduler()からコードを実行しようとしましたが、まだ例外が発生しています。

私のテストはどのように別のスレッドで実行できますか?

答えて

0

マルチスレッドコードをテストする際の主な考え方は、スレッドを制御された方法で実行することです。

私はどうなるのか:

  1. 移動チェックコードをいくつかのクラスヘルパーに
  2. それを注入し、テストのこの溶液を

プラスの下でそれを嘲笑:

  1. それはあなたの問題を解決します
  2. それは重複を削除しますicationと近いSRPの(単一のクラスの責任の原則を)あなたを移動

マイナス:

  1. それはあなたがかもしれないとそれはあなたにさらなる柔軟性を与える方法
  2. の背後にある機能は非表示になりますので、それは適切なネーミングを要求します必要ない

成功!

関連する問題