8

Robolectric を使用していくつかのテストを作成しましたが、実際のテスト クラスを実行したいと考えています。

私が気づいたことの 1 つは、onCreate、onLocationChanged などのイベントをテストできないことです。

イベントをテストするための標準的な方法は何ですか?

イベント内のコードを抽出してメソッドに配置する必要がある場合、イベントはメソッドを呼び出し、robolectro もメソッドを呼び出すことができます。もちろん、メソッドはパブリックである必要がありますよね?

また、通常はプライベート変数であるメソッド内で何かをテストしたい場合は、パブリックゲッターを追加する必要がありますよね? これをrobolectricから確認できますか?

データを robolectric に公開するより良い方法はありますか?

4

2 に答える 2

7

onCreate をテストするとき、robolectric に onCreate を呼び出してもらい、onCreate 後にアクティビティが正しい状態であることをテストします。次に例を示します。

@RunWith(RoboTestRunner.class)
public class DashboardActivityTest {

    private DashboardActivity activity;

    @Before
    public void setUp() throws Exception {
        activity = new DashboardActivity();
    }

    @After
    public void tearDown() throws Exception {
    }

    @Test
    public void testDashboardHasButtons() {
        activity.onCreate(null);
        Button btn1= (Button) activity.findViewById(R.id.btn1);
        assertNotNull(btn1);
        Button btn2= (Button) activity.findViewById(R.id.btn2);
        assertNotNull(btn2);
    }
}

プライベート メソッドをテストすることは、通常、設計が改善される可能性があることを示しており、Robolectric 固有の問題ではありません。

多くの議論については、この質問を参照してください: プライベートメソッド、フィールド、または内部クラスを持つクラスをテストするにはどうすればよいですか?

于 2012-08-16T15:42:16.217 に答える