1

android.test.ActivityUnitTestCase に基づいて簡単な単体テストを書きたいと思います。テストは単純なので、実行時間は非常に短いと思います。ただし、テストには少なくとも 6 秒かかります。

このテストでは、Google のチュートリアルの簡単なアプリケーションをテストします。これは私のテストです:

public class MainActivityUnitTest extends ActivityUnitTestCase<MainActivity> {

    public MainActivityUnitTest() {
        super(MainActivity.class);
    }

    @Override
    protected void setUp() throws Exception {
        super.setUp();
        Intent intent = new Intent(getInstrumentation().getTargetContext(),
                MainActivity.class);
        startActivity(intent, null, null);
    }

    public void testNextActivityWasLaunchedWithIntent() {
        Button sendButton =
                (Button) getActivity()
                .findViewById(com.bjoerne.aroundtheworldvisualizer.R.id.send);
        sendButton.performClick();

        Intent intent = getStartedActivityIntent();
        assertNotNull("Intent was null", intent);
        final String payload =
                intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
        assertEquals("", payload);
    }
}

Eclipse で「Run as -> Android JUnit Test」を選択しました。あれは正しいですか?ただし、Android Virtual Device (AVD) が必要なようです。AVD が開始されていない場合は、テストのために開始されます (テストには 1 分かかります)。ただし、AVD が既に実行されている場合でも、数秒かかるテストが実行される前にチェックまたは初期化されているようです。

ActivityUnitTestCase 用に実行中の AVD は必要ありませんか? テストの実行を高速化する方法はありますか?

4

2 に答える 2

0

Android が提供する単体テストの概念を誤解していました。(仮想) デバイスなしでテストを作成する方法があることを期待していました。

Robolectricは私が探していたものだと思います。Android と同じ API を提供していましたが、デバイスはありませんでした。デバイスは嘲笑されます。テスト駆動で開発したい人はチェックしてみてはいかがでしょうか。

于 2013-10-18T08:36:24.093 に答える