Android函数测试输入到EditText随机丢失

时间:2015-03-27 09:32:44

标签: android android-testing

我正在为我的活动编写功能测试,其中包含EditText和TextView。 TextView根据EditText的用户输入进行更改。当我运行测试时,EditText有时不会得到我的输入,因此测试失败。

以下是我的测试的最小版本,它仍然给我同样的问题。

public class MainActivityTest extends ActivityInstrumentationTestCase2<MainActivity> {

    private MainActivity mainActivity;

    public MainActivityTest() {
        super(MainActivity.class);
    }

    @Override
    protected void setUp() throws Exception {
        super.setUp();
        mainActivity = getActivity();
    }

    public void testEditTextOne() {
        final EditText e = (EditText) mainActivity.findViewById(R.id.edit_message);

        getInstrumentation().runOnMainSync(new Runnable() {
            @Override
            public void run() {
                e.requestFocus();
            }
        });
        getInstrumentation().waitForIdleSync();
        getInstrumentation().sendStringSync("120");
        getInstrumentation().waitForIdleSync();

        assertEquals("120", e.getText().toString());
    }

    public void testEditTextTwo() {
        final EditText e = (EditText) mainActivity.findViewById(R.id.edit_message);

        getInstrumentation().runOnMainSync(new Runnable() {
            @Override
            public void run() {
                e.requestFocus();
            }
        });
        getInstrumentation().waitForIdleSync();
        getInstrumentation().sendStringSync("130");
        getInstrumentation().waitForIdleSync();

        assertEquals("130", e.getText().toString());
    }
}

当我运行上述测试时,大多数情况下testEditTextOne()会通过而testEditTextTwo()会失败。有时候,两个测试都会失败。

testEditTextTwo()如果我单独运行它会通过,但如果重复运行大约10次,有时会失败。

我正在使用Android Studio 1.1.0上的“Android Instrumentation Tests”运行测试,并且不使用任何第三方测试框架。

我刚刚开始使用Android,所以我不知道是否会造成某种竞争条件。请解释一下导致这种奇怪行为的原因。

0 个答案:

没有答案