Ich versuche, in Android -Espresso einzusteigen, und habe ein. APK, um Dinge auszuprobieren. Abgesehen von der Beinarbeit, wie ich es geschafft habe, den Test zum Laufen zu bringen, versuche ich jetzt herauszufinden, wie die Anzahl der Einträge in einer Tabelle ermittelt wird, und wie man Werte aus Ansichten extrahiert. Einträge. Für den Test möchte ich auf den letzten Eintrag klicken und seinen Text extrahieren, da die nächsten Schritte je nach Zahl geringfügig unterschiedlich sind.
int tableId = context.getResources()
.getIdentifier("randomInts","id",context.getPackageName());
ViewInteraction table = onView(withId(tableId));
table.check(matches(isDisplayed()));
< /code>
Wenn ich den RowCount kannte, könnte ich einfach die folgende Anweisung mit der richtigen Nummer in WitharenIndex verwenden. < /p>
onView(allOf(
withParent(withId(itemRepo.id(itemRepo.idTableRandomInt))),
withClassName(containsString("TableRow")),
withParentIndex(40)
)).perform(scrollTo(), click());
< /code>
Viele der Fragen zum Thema verwenden Matcher, um die Kinderzahl mit einer bekannten erwarteten Größe zu vergleichen, aber ich kann dies aufgrund des zufälligen RowCount nicht verwenden. Ich habe versucht, die Ansichtsinteraktion in eine Listansicht umzuwandeln, aber das verursacht "Inconvertible types; cannot cast 'androidx.test.espresso.ViewInteraction' to 'android.widget.ListView'
ListView tableView = (ListView) table;
int tablecount = tableView.getAdapter().getCount();
< /code>
Ebenso wird versucht, meine ID für das Tablelayout in den Matcher in dieser Frage zu geben. kann 'androidx.test.espresso.datainteraction' to 'android.widget.ListView'
DataInteraction tablerows = onData(withId(tableId))
.inAdapterView(withClassName(containsString("TableRow")));
ListView tableList = (ListView) tablerows;
< /code>
Ich habe versucht, den Ansatz hier zu imitieren, aber Android Studio beschwerte sich, als ich ihn innerhalb der Testmethode platzierte und als ich ihn in derselben Klasse wie die Testmethode platzierte. Es landete in seiner eigenen Klasse, aber der veränderte Ansatz mit Tablerow.Class gibt 0 zurück und wäre unflexibel, selbst wenn es funktioniert. < /P>
public class Matchers {
private static int counter = 0;
public void resetCounter() {
counter = 0;
}
public static int getCounter() {
return counter;
}
public static Matcher countChildrenForParent(final Class classname) {
checkNotNull(classname);
return new TypeSafeMatcher() {
@Override
public void describeTo(Description description) {
description.appendText("with item id: " + classname);
}
@Override
public boolean matchesSafely(View view) {
if ((view.getClass() == classname)){
counter++;
return true;
}
return false;
}
};
}
}
< /code>
onView(Matchers.countChildrenForParent(TableRow.class));
Log.d("tag", "Matcher for table entries returned " + Matchers.getCounter());
< /code>
So as far as I can tell, I also won't be able to use a custom matcher to extract the random number from the last entry until I have figured this out.
I also noticed that the already identified randomInts has a "child-count=111" property, but I haven't seen a way to access these values so far.
TableLayout{id=2131231112, res-name=randomInts, visibility=VISIBLE, width=360, height=8655, has-focus=false, has-focusable=true, has-window-focus=true, is-clickable=false, is-enabled=true, is-focused=false, is-focusable=false, is-layout-requested=false, is-selected=false, layout-params=android.widget.LinearLayout$LayoutParams@YYYYYY, tag=null, root-is-layout-requested=false, has-input-connection=false, x=0.0, y=0.0, child-count=111}
Bearbeiten: Ich habe es geschafft, den Text der ersten Textansicht mit der Antwort auf diese Frage zu erhalten, und ich sollte hoffentlich in der Lage sein, diese Lösung später anzupassen, um die Hintergrundfarbe für einen anderen Teil der Übung zu erhalten und zu vergleichen.
Ich versuche, in Android -Espresso einzusteigen, und habe ein. APK, um Dinge auszuprobieren. Abgesehen von der Beinarbeit, wie ich es geschafft habe, den Test zum Laufen zu bringen, versuche ich jetzt herauszufinden, wie die Anzahl der Einträge in einer Tabelle ermittelt wird, und wie man Werte aus Ansichten extrahiert. Einträge. Für den Test möchte ich auf den letzten Eintrag klicken und seinen Text extrahieren, da die nächsten Schritte je nach Zahl geringfügig unterschiedlich sind.[code]int tableId = context.getResources() .getIdentifier("randomInts","id",context.getPackageName()); ViewInteraction table = onView(withId(tableId)); table.check(matches(isDisplayed())); < /code> Wenn ich den RowCount kannte, könnte ich einfach die folgende Anweisung mit der richtigen Nummer in WitharenIndex verwenden. < /p> onView(allOf( withParent(withId(itemRepo.id(itemRepo.idTableRandomInt))), withClassName(containsString("TableRow")), withParentIndex(40) )).perform(scrollTo(), click()); < /code> Viele der Fragen zum Thema verwenden Matcher, um die Kinderzahl mit einer bekannten erwarteten Größe zu vergleichen, aber ich kann dies aufgrund des zufälligen RowCount nicht verwenden. Ich habe versucht, die Ansichtsinteraktion in eine Listansicht umzuwandeln, aber das verursacht "Inconvertible types; cannot cast 'androidx.test.espresso.ViewInteraction' to 'android.widget.ListView'[/code]". [code]ListView tableView = (ListView) table; int tablecount = tableView.getAdapter().getCount(); < /code> Ebenso wird versucht, meine ID für das Tablelayout in den Matcher in dieser Frage zu geben. kann 'androidx.test.espresso.datainteraction' to 'android.widget.ListView' [/code] nicht gegossen werden.[code]DataInteraction tablerows = onData(withId(tableId)) .inAdapterView(withClassName(containsString("TableRow"))); ListView tableList = (ListView) tablerows; < /code> Ich habe versucht, den Ansatz hier zu imitieren, aber Android Studio beschwerte sich, als ich ihn innerhalb der Testmethode platzierte und als ich ihn in derselben Klasse wie die Testmethode platzierte. Es landete in seiner eigenen Klasse, aber der veränderte Ansatz mit Tablerow.Class gibt 0 zurück und wäre unflexibel, selbst wenn es funktioniert. < /P> public class Matchers { private static int counter = 0; public void resetCounter() { counter = 0; }
public static int getCounter() { return counter; } public static Matcher countChildrenForParent(final Class classname) { checkNotNull(classname); return new TypeSafeMatcher() { @Override public void describeTo(Description description) { description.appendText("with item id: " + classname); }
@Override public boolean matchesSafely(View view) { if ((view.getClass() == classname)){ counter++; return true; } return false; } }; } } < /code> onView(Matchers.countChildrenForParent(TableRow.class)); Log.d("tag", "Matcher for table entries returned " + Matchers.getCounter()); < /code> So as far as I can tell, I also won't be able to use a custom matcher to extract the random number from the last entry until I have figured this out. I also noticed that the already identified randomInts has a "child-count=111" property, but I haven't seen a way to access these values so far. TableLayout{id=2131231112, res-name=randomInts, visibility=VISIBLE, width=360, height=8655, has-focus=false, has-focusable=true, has-window-focus=true, is-clickable=false, is-enabled=true, is-focused=false, is-focusable=false, is-layout-requested=false, is-selected=false, layout-params=android.widget.LinearLayout$LayoutParams@YYYYYY, tag=null, root-is-layout-requested=false, has-input-connection=false, x=0.0, y=0.0, child-count=111}[/code] Bearbeiten: Ich habe es geschafft, den Text der ersten Textansicht mit der Antwort auf diese Frage zu erhalten, und ich sollte hoffentlich in der Lage sein, diese Lösung später anzupassen, um die Hintergrundfarbe für einen anderen Teil der Übung zu erhalten und zu vergleichen.
Was ich versuche, ist, mithilfe der nativen Android-Bibliotheken ein Startdatum und ein letztes Datum des letzten Monats sowie das erste Datum des Jahres zu ermitteln. Ich habe es mit LocalDate...
Ich verwende Espresso-Tests, um meine Android-App (targetSDKVersion: 34) zu testen. Die App enthält ein Modul, das Google Maps und Ortungsdienste nutzt. Ich möchte den Standort nachahmen, um...
Ich muss Spielerstatistiken für den letzten Tag, die letzte Woche, den letzten Monat und insgesamt anzeigen. Die Statistiken werden in einem PlayerShip-Modell gespeichert. Ich habe Tabellen, die...
Ich muss Spielerstatistiken für den letzten Tag, die letzte Woche, den letzten Monat und insgesamt anzeigen. Die Statistiken werden in einem PlayerShip-Modell gespeichert. Ich habe Tabellen, die...
Ich habe eine Android-App entwickelt, die sich in Firebase Firestore und Realtime Database integriert. Ich möchte jetzt End-to-End-Tests (E2E) durchführen, die Firebase einbeziehen.
Test-Setup:...