Sto provando a testare uno Spinner generato dinamicamente. Sono in grado di fare clic sulla casella di selezione, ma poi ho bisogno di selezionare un'opzione dalla lista con un dato testo che viene mostrato (ho scoperto da hierarchyviewer che una finestra popup è mostrata ma non riesco a ottenere il testo richiesto che è fuori schermo) . Il filatore utilizza un ArrayAdapter di oggetti personalizzati (codice qui sotto),test dinamico spinner espresso
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Spinner mySpinner = (Spinner) findViewById(R.id.my_spinner);
List<MyValue> list = Arrays.asList(
new MyValue("One", "1"),
new MyValue("Two", "2"),
new MyValue("Three", "3"),
new MyValue("Four", "4"),
new MyValue("Five", "5"),
new MyValue("Six", "6"),
new MyValue("Seven", "7"),
new MyValue("Eight", "8"),
new MyValue("Nine", "9"),
new MyValue("Ten", "10"),
new MyValue("Eleven", "11"),
new MyValue("Twelve", "12"),
new MyValue("Thirteen", "13"),
new MyValue("Fourteen", "14"),
new MyValue("Fifteen", "15"),
new MyValue("Sixteen", "16"),
new MyValue("Seventeen", "17"),
new MyValue("Eighteen", "18"),
new MyValue("Nineteen", "19"),
new MyValue("Twenty", "20"),
new MyValue("Twenty One", "21")
);
final ArrayAdapter<MyValue> adapter = new ArrayAdapter<>(this,
R.layout.dropdown_selected_item,
list);
mySpinner.setAdapter(adapter);
mySpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
Log.d("MySpinnerTest", "current = " + adapter.getItem(position));
}
@Override
public void onNothingSelected(AdapterView<?> parent) {}
});
}
public class MyValue {
String name;
String code;
public MyValue(String name, String code) {
this.name = name;
this.code = code;
}
@Override
public String toString() {
return name;
}
}
}
ho provato con onData(withSpinnerText("Twenty")).perform(click())
ma ottengo un PerformException e ho cercato di scoprire in quale altro modo per abbinare la corretta visione sulla base di un dato testo, nel filatore popupwindow ma non riuscivo a capire come farlo.
Qualsiasi aiuto sarebbe molto apprezzato.
TIA
E 'possibile allegare un'eccezione di esecuzione che si vede e con matcherSpinnerText? –