So even though there are numerous questions that are similar to this one, none of the answers seem to fix my error. I'm simply trying to check that an item that my test puts into a list view is in fact in it.
Test
@RunWith(AndroidJUnit4.class)
public class StartNewGameEspressoTest {
@Rule
public ActivityTestRule<ModeratorActivity> mActivityTestRule = new ActivityTestRule<>(ModeratorActivity.class);
@Test
public void startNewGameEspressoTest() {
ViewInteraction appCompatButton = onView(
allOf(withId(R.id.new_game_button), withText("New Game"),
withParent(withId(R.id.content_moderator)),
isDisplayed()));
appCompatButton.perform(click());
ViewInteraction appCompatButton2 = onView(
allOf(withId(R.id.add),
withParent(withId(R.id.content_start_new_game)),
isDisplayed()));
appCompatButton2.perform(click());
onView(withId(R.id.edit_text_name))
.perform(typeText("Test Name"), closeSoftKeyboard());
onView(withText("Add")).perform(click());
DataInteraction listView = onData(anything())
.inAdapterView(withId(R.id.Players))
.atPosition(0);
listView.check(matches(withText("Test Name")));
}
Start New Game Activity
public class StartNewGameActivity extends AppCompatActivity
implements CreatePlayerDialogFragment.PlayerDialogListener {
private ListView lv;
List<String> playerNames = new ArrayList<String>();
ArrayList<Player> players = new ArrayList<Player>();
public void addNewPlayer(View view) {
DialogFragment newFragment = new CreatePlayerDialogFragment();
newFragment.show(getSupportFragmentManager(), "Player");
}
@Override
public void onDialogPositiveClick(String name) {
playerNames.add(name);
//players.add(new Player());
}
public void beginGame(View view) {
EditText gameNameField = (EditText) findViewById(R.id.gameName);
String gameName = gameNameField.getText().toString().trim();
Collections.shuffle(players);
if (gameName.isEmpty()) {
CharSequence text = "No Game Name Entered";
int duration = Toast.LENGTH_LONG;
Toast toast = Toast.makeText(getApplicationContext(), text, duration);
toast.show();
}
else if (playerNames.size() < 2) {
CharSequence text = "Not Enough Players";
int duration = Toast.LENGTH_LONG;
Toast toast = Toast.makeText(getApplicationContext(), text, duration);
toast.show();
}
else {
for (int i = 0; i < players.size(); i++) {
if (i != (players.size() - 1)) {
players.get(i).target = players.get(i + 1);
} else {
players.get(i).target = players.get(0);
}
}
Game game = new Game(gameName, players);
}
}
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_start_new_game);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
lv = (ListView) findViewById(R.id.Players);
final ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(
this,
android.R.layout.simple_list_item_1,
playerNames );
lv.setAdapter(arrayAdapter);
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> a, View v, int position, long id) {
AlertDialog.Builder adb=new AlertDialog.Builder(StartNewGameActivity.this);
adb.setTitle("Delete?");
adb.setMessage("Are you sure you want to remove " + "\"" + playerNames.get(position).toString() + "\"" + " From the game?");
final int positionToRemove = position;
adb.setNegativeButton("Cancel", null);
adb.setPositiveButton("Ok", new AlertDialog.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
playerNames.remove(positionToRemove);
arrayAdapter.notifyDataSetChanged();
}});
adb.show();
}
});
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
setContentView(R.layout.activity_start_new_game);
lv = (ListView) findViewById(R.id.Players);
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(
this,
android.R.layout.simple_list_item_1,
playerNames );
lv.setAdapter(arrayAdapter);
}
}
XML File
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/content_start_new_game"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context="com.example.hunte.assassin.StartNewGameActivity"
tools:showIn="@layout/activity_start_new_game">
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textCapWords"
android:ems="10"
android:id="@+id/gameName"
android:textAlignment="center"
android:hint="Name Of Game"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:textColorLink="?attr/colorPrimaryDark"
android:selectAllOnFocus="true" />
<ListView
android:layout_marginTop="15dp"
android:layout_height="300dp"
android:layout_width="250dp"
android:layout_below="@+id/gameName"
android:layout_alignLeft="@+id/gameName"
android:layout_alignStart="@+id/gameName"
android:id="@+id/Players" />
<TextView
android:text=" Players:"
android:id="@+id/textView3"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:layout_marginTop="62dp"
android:layout_alignTop="@+id/listView"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<ImageButton
android:text="Button"
android:id="@+id/add"
android:foreground="@android:drawable/ic_input_add"
android:layout_marginTop="6dp"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_below="@+id/textView3"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:onClick="addNewPlayer"/>
<Button
android:text="Begin!"
android:layout_width="100dp"
android:layout_height="50dp"
android:id="@+id/begin"
android:layout_marginBottom="50dp"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:onClick="beginGame"/>
</RelativeLayout>
Just to be clear, the test does in fact manage to put the item in the list view. Im getting the error "android.support.test.espresso.PerformException: Error performing 'load adapter data' on view 'Animations or transitions are enabled on the target device."
Aucun commentaire:
Enregistrer un commentaire