したがって、TextView、EditText、Buttonの3つの要素を持つこのテストアクティビティがあります。ユーザーがボタンをクリックすると、ActivityはテキストをEditTextからTextViewのテキストに変換します。
質問は:そのような活動のユニットテストをどのように書くのですか?
私の問題:あるスレッドのボタンを「クリック」(.performClick)する必要がありますが、別のスレッドでは非同期で待機しますが、「test」プレフィックスで始まるすべてのテストを実行し、testを「」とマークするため、単体テストのロジックが壊れます。失敗したアサーションがなかった場合は「OK」。
ユニットテストのコード:
public class ProjectToTestActivityTest extends ActivityInstrumentationTestCase2<ProjectToTestActivity> {
private TextView resultView;
private EditText editInput;
private Button sortButton;
public ProjectToTestActivityTest(String pkg, Class activityClass) {
super("com.projet.to.test", ProjectToTestActivity.class);
}
public void onTextChanged(String str)
{
Assert.assertTrue(str.equalsIgnoreCase("1234567890"));
}
@Override
protected void setUp() throws Exception {
super.setUp();
Activity activity = getActivity();
resultView = (TextView) activity.findViewById(R.id.result);
editInput = (EditText) activity.findViewById(R.id.editInput);
sortButton = (Button) activity.findViewById(R.id.sortButton);
resultView.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable arg0) {
onTextChanged(arg0.toString());
}
}
}
protected void testSequenceInputAndSorting()
{
editInput.setText("1234567890");
sortButton.performClick();
}
}