0

次のようにレイアウトで定義されたボタンがあります。

<Button
                android:id="@+id/speakButton"
                android:layout_height="wrap_content"
                android:layout_width="fill_parent"
                android:text="@string/speak"
                android:onClick="speak"
                />

onClick、次のようなアクティビティのメソッドにバインドします。

public void speak(View v)
    {
        // Do my stuff here
    }

Robolectric を使用して、そのアクティビティ用の簡単なテスト クラスを作成できます。ボタンを呼び出すテストが可能かどうかを知りたいのですが、アクティビティのメソッドが正常に呼び出されたことを確認します。

(私はアプリ全体にたくさんのボタンを持っているので、なぜ私が気にしないべきかについて誰かが提案しない限り、それらが正しく配線されていることを確認するためのテストを行うつもりです)

@RunWith(RobolectricTestRunner.class)
public class MyActivityTest
{
    private MyActivitymActivity;
    private Button speakButton;

    @Before
    public void setUp() throws Exception
    {
        mActivity = new MyActivity();
        mActivity.onCreate(null);

        speakButton = (Button) mActivity.findViewById(com.jameselsey.apps.androidsam.R.id.speakButton);

    }

    @Test
    public void testButtonsVisible()
    {
        assertThat(speakButton.getVisibility(), equalTo(View.VISIBLE));        
    }

    @Test
    public void buttonsInvokeIntendedMethods()
    {
        // Unsure how to implement this test
    }
}
4

1 に答える 1

0

私はそれらを使用したことはありませんが、TouchUtilsクラスでこれを行うことができると信じています。Android TouchUtils docsへのリンクは次のとおりです。特に、clickViewメソッドに注目する必要があります。

于 2011-10-07T19:21:01.130 に答える