2013-04-25 53 views
1

我在jUnit中测试有问题。 这是我的测试类:安卓和jUnit中测试simplecalc

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中的文本。但有些错误,因为即使我在22上设置RESULT,我也不会在testPlus()中遇到错误。在该方法的单击按钮之后的结果应该在33.0的编辑视图中设置文本,因此单击该方法和RESULT中的按钮之后的文本是不同的,因此测试不应该通过。哪里不对?

回答

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); 
}