Android:单元测试中的键盘输入

时间:2016-12-12 09:52:37

标签: java android junit

我想在我的单元测试中实现用户交互,我希望用户输入我需要的一些信息,以便在应用中登录他,这是我写的:

@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...");
}

我得到的内容:我看到消息"输入用户名并按Enter:"它看起来线应用实际上正在等待用户输入它,但是,由于某种原因,应用程序根本没有对键盘作出反应。如果能以某种方式提供帮助,我会使用AndroidStudio。

2 个答案:

答案 0 :(得分:2)

在这种情况下,我建议您编写UI测试(例如使用Espresso Espresso Test Recording:https://developer.android.com/studio/test/espresso-test-recorder.html)。

答案 1 :(得分:0)

您的String data = "Users Input"; System.setIn(new ByteArrayInputStream(data.getBytes())); 正在等待用户输入内容。 您的问题是模拟用户条目。 类似的问题已经回答here,建议使用类似的东西:

$jsonArray = json_decode($json, true);

$arrayStatus = array();


foreach ($jsonArray as $key => $value) {

    $key; $inc = 0 ;
    for($i=0;$i<count($value);$i++){

        $patient_id = $value[$i]['gid'];
        $s = $inc++;
        //Avoid array indexs
        $arrayStatus[$patient_id][$key][] = ['status' => "Success", 'test_id' => 'xxx'];

    }
}

$results = array();
$results['upload_status'] = $arrayStatus;
echo $resArr = json_encode($results);

我希望这会有所帮助。