1

我在 jUnit 中进行测试时遇到问题。这是我的测试课:

public class MainActivityTest extends
        ActivityInstrumentationTestCase2<MainActivity> {
    Button button1, button2, button3, button4, button5, button6, button7, button8, button9, buttonResult, buttonPlus;
    EditText resultConsole;
    private static final String FIRSTVALUE = "12";
    private static final String SECONDVALUE = "21";
    private static final String RESULT = "33.0";
    MainActivity mainActivity;

    public MainActivityTest() {
        super("com.example.simpletest", MainActivity.class);
    }

    public void setUp() throws Exception {
        super.setUp();
            setActivityInitialTouchMode(false);
            mainActivity = getActivity();
            button1 = (Button) mainActivity.findViewById(R.id.button1);
            button2 = (Button) mainActivity.findViewById(R.id.button2);
            button3 = (Button) mainActivity.findViewById(R.id.button3);
            button4 = (Button) mainActivity.findViewById(R.id.button4);
            button5 = (Button) mainActivity.findViewById(R.id.button5);
            button6 = (Button) mainActivity.findViewById(R.id.button6);
            button7 = (Button) mainActivity.findViewById(R.id.button7);
            button8 = (Button) mainActivity.findViewById(R.id.button8);
            button9 = (Button) mainActivity.findViewById(R.id.button9);
            buttonResult = (Button) mainActivity.findViewById(R.id.buttonResult);
            buttonPlus = (Button) mainActivity.findViewById(R.id.buttonPlus);
            resultConsole = (EditText) mainActivity.findViewById(R.id.editText1);

    }
    String result;
    public void testPlus(){
            mainActivity.runOnUiThread(new Runnable() {

                @Override
                public void run() {
                    assertTrue(button1.performClick());
                    assertTrue(button2.performClick());
                    assertTrue(buttonPlus.performClick());
                    assertTrue(button2.performClick());
                    assertTrue(button1.performClick());
                    assertTrue(buttonResult.performClick());

                    result =  resultConsole.getText().toString();
                    assertTrue(!result.equals(0));
                    assertEquals(result, RESULT);


                }
            });


    }

}

这是经过测试的课程:

public class MainActivity extends Activity {

    Button button1, button2, button3, button4, button5, button6, button7, button8, button9, buttonResult, buttonPlus;
    EditText resultConsole;
    String result = "";
    Double variable = 0.0;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        button1 = (Button) findViewById(R.id.button1);
        button2 = (Button) findViewById(R.id.button2);
        button3 = (Button) findViewById(R.id.button3);
        button4 = (Button) findViewById(R.id.button4);
        button5 = (Button) findViewById(R.id.button5);
        button6 = (Button) findViewById(R.id.button6);
        button7 = (Button) findViewById(R.id.button7);
        button8 = (Button) findViewById(R.id.button8);
        button9 = (Button) findViewById(R.id.button9);
        buttonResult = (Button) findViewById(R.id.buttonResult);
        buttonPlus = (Button) findViewById(R.id.buttonPlus);
        resultConsole = (EditText) findViewById(R.id.editText1);

       button1.setOnClickListener(onClick);
       button2.setOnClickListener(onClick);
       button3.setOnClickListener(onClick);
       button4.setOnClickListener(onClick);
       button5.setOnClickListener(onClick);
       button6.setOnClickListener(onClick);
       button7.setOnClickListener(onClick);
       button8.setOnClickListener(onClick);
       button9.setOnClickListener(onClick);
       buttonPlus.setOnClickListener(onClick);
       buttonResult.setOnClickListener(onClick);
    }

    private View.OnClickListener onClick = new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            switch (v.getId()) {
            case R.id.button1:
                result += button1.getText().toString();
                resultConsole.setText(result);
                break;
            case R.id.button2:
                result += button2.getText().toString();
                resultConsole.setText(result);
                break;
            case R.id.button3:
                result += button3.getText().toString();
                resultConsole.setText(result);
                break;
            case R.id.button4:
                result += button4.getText().toString();
                resultConsole.setText(result);
                break;
            case R.id.button5:
                result += button5.getText().toString();
                resultConsole.setText(result);
                break;
            case R.id.button6:
                result += button6.getText().toString();
                resultConsole.setText(result);
                break;
            case R.id.button7:
                result += button7.getText().toString();
                resultConsole.setText(result);
                break;
            case R.id.button8:
                result += button8.getText().toString();
                resultConsole.setText(result);
                break;
            case R.id.button9:
                result += button9.getText().toString();
                resultConsole.setText(result);
                break;
            case R.id.buttonPlus:
                if(!result.equals("")){
                variable += Double.parseDouble(result);
                resultConsole.setText(variable.toString());
                result = "";
                }
                break;
            case R.id.buttonResult:
                if(!result.equals("")){
                variable += Double.parseDouble(result);
                resultConsole.setText(variable.toString());
                result = "";
                }
                break;
            default:
                break;
            }

        }
    };

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }


}

这是一个简单的计算器。我想测试结果并等于结果。要检查结果,我想单击按钮并检查 editText 中的文本。但是出了点问题,因为testPlus()即使我设置RESULT22. 单击该方法的按钮后的结果应在 33.0 的编辑视图中设置文本,因此单击该方法的按钮后的文本和 RESULT 不同,因此测试不应通过。怎么了?

4

1 回答 1

0

这是解决方案:

public void testPlus(){
        mainActivity.runOnUiThread(new Runnable() {

            @Override
            public void run() {
                assertTrue(button1.performClick());


            }
        });
        getInstrumentation().waitForIdleSync();
        mainActivity.runOnUiThread(new Runnable() {

            @Override
            public void run() {

                assertTrue(button2.performClick());


            }
        });
        getInstrumentation().waitForIdleSync();
        mainActivity.runOnUiThread(new Runnable() {

            @Override
            public void run() {

                assertTrue(buttonPlus.performClick());


            }
        });
        getInstrumentation().waitForIdleSync();
        mainActivity.runOnUiThread(new Runnable() {

            @Override
            public void run() {

                assertTrue(button2.performClick());


            }
        });
        getInstrumentation().waitForIdleSync();
        mainActivity.runOnUiThread(new Runnable() {

            @Override
            public void run() {

                assertTrue(button1.performClick());


            }
        });
        getInstrumentation().waitForIdleSync();
        mainActivity.runOnUiThread(new Runnable() {

            @Override
            public void run() {

                assertTrue(buttonResult.performClick());



            }
        });
        getInstrumentation().waitForIdleSync();
        String result =  resultConsole.getText().toString();
        assertTrue(!result.equals(0));

        assertEquals(RESULT, result);
}
于 2013-04-25T08:08:59.927 回答