次のようにレイアウトで定義されたボタンがあります。
<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
}
}