我在 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()
即使我设置RESULT
了22
. 单击该方法的按钮后的结果应在 33.0 的编辑视图中设置文本,因此单击该方法的按钮后的文本和 RESULT 不同,因此测试不应通过。怎么了?