Nik Myers
Nik Myers

Reputation: 1873

Android: Keyboard input in Unit Test

I want to implement user interaction in my Unit tests, i want user to input some info that i need in order to log him in the app, here's what i've written:

@Before
public void setup() {
    mActivity = Robolectric.buildActivity(MainActivity.class).create().get();
    mKeyboard = new Scanner(System.in);
}

@Test
public void userInteraction() {
    System.out.println("Enter Username and press Enter : ");
    mUsername = mKeyboard.nextLine();
    System.out.println("Enter Password and press Enter : ");
    mPassword = mKeyboard.nextLine();
    System.out.println("Trying to login...");
}

What i'm getting: i see the message "Enter Username and press Enter :" and it looks line app is actually waiting for user to input it, but, for some reason app is not reacting to keyboard at all. I'm using AndroidStudio if that can help somehow.

Upvotes: 3

Views: 1814

Answers (2)

Leśniakiewicz
Leśniakiewicz

Reputation: 904

In this kind of situations I would reccomend you to write UI Tests (use Espresso for example with Espresso Test Recording: https://developer.android.com/studio/test/espresso-test-recorder.html).

Upvotes: 2

Xavier Bauquet
Xavier Bauquet

Reputation: 732

Your mUsername = mKeyboard.nextLine(); is waiting for the user to enter something. Your problem is to simulate the user entries. A similar question has been answered here, and suggest to use something like that:

String data = "Users Input";
System.setIn(new ByteArrayInputStream(data.getBytes()));

I hope this will help.

Upvotes: 0

Related Questions