2

アクティビティ B を起動するアクティビティ A があります。

アプリをテストするためのロボティウム プロジェクトが必要なので、アクティビティ A の最初のテスト クラスを作成しましたが、すべてうまくいきました。

アクティビティ B をテストするための別のテスト クラスを作成したいのですが、アクティビティ A からの初期化が必要です。

私はこれを試しました:

BTestClass extends ActivityInstrumentationTestCase2 {
    private Solo solo;
private ATestClass testA;

    @Override
    protected void setUp() throws Exception {
        Log.i(TAG, "setUp");

        solo = new Solo(getInstrumentation(), getActivity());
        testA = new ATestClass();
        testA.setUp();
        testA.testAddAccount();
        solo.clickInList(0);
    }

    [… more test method]
}

testA が getActivity() を実行しているときに NullPointerException が発生しました

4

1 に答える 1

1

私はこのようにします:

public class BTest extends ActivityInstrumentationTestCase2<SplashScreenActivity> {

    protected static final String TARGET_PACKAGE_ID = "app.under.test";

    protected Solo solo;

    public BTest() {
        super(TARGET_PACKAGE_ID, StartingActivity.class);
    }

    @Override
    public void setUp() throws Exception {

        super.setUp();

        solo = new Solo(getInstrumentation(), getActivity());

        // setup stuff


    }

    @Override
    public void tearDown() throws Exception {

        // teardown stuff


        super.tearDown();
    }

}

すべてのテストケースは BTest から継承するだけです。

public class OneTest extends BTest {

    public void test_OneTest() {

        //test stuff
        solo.clickOnButton("Ok");

    }


}
于 2012-07-27T16:05:04.827 に答える