Ich versuche, automatisierte Tests für meine App zu implementieren.
Ich habe eine Schubladenansicht, die sich öffnet, wenn sie berührt wird, darin befindet sich ein Knopf. Was ich tun möchte, ist die Schubladenansicht zu berühren, um sie zu öffnen, den Knopf darin zu berühren und dann die Schubladenansicht wieder zu schließen, indem ich sie erneut berühre.
Hier ist ein Stück Code meiner Tests (ActivityInstrumentationTestCase2)
ToggleButton insideBtn = (ToggleButton) mActivity.findViewById(R.id.sliding_btn);
Button drawerBtn = (Button) mActivity.findViewById(R.id.drawer_btn);
TouchUtils.tapView(this,drawerBtn);
TouchUtils.tapView(this, insideBtn);
TouchUtils.tapView(this, drawerBtn);
...some assertion ...
Ich habe festgestellt, dass dieser Code manchmal funktioniert, manchmal aber auch nicht. Das Problem ist, dass die Schublade nach der Berührung nicht geöffnet wird, was dazu führt, dass der insideBtn nicht berührt werden kann.
Also habe ich diesen Code ausprobiert:
ToggleButton insideBtn = (ToggleButton) mActivity.findViewById(R.id.sliding_btn);
Button drawerBtn = (Button) mActivity.findViewById(R.id.drawer_btn);
SlidingDrawer drawer = (SlidingDrawer) mActivity.findViewById(R.id.drawer);
while(!drawer.isOpened()) {
TouchUtils.tapView(this,drawerBtn);
}
TouchUtils.tapView(this, insideBtn);
TouchUtils.tapView(this, drawerBtn);
...some assertion ...
Aber das Ergebnis ist, dass manchmal, wenn der Test funktioniert, es beim ersten Mal funktioniert, so dass die Schleife nicht erforderlich ist. Aber wenn es nicht funktioniert, läuft die Schleife unendlich lang - keine Berührung führt dazu, dass die Schublade geöffnet wird.
Haben Sie Ideen, wie man diesen Test so schreiben kann, dass er zuverlässig funktioniert?