在jUnit中测试Android和simplecalc
我对jUnit中的测试有问题。 这是我的测试课:在jUnit中测试Android和simplecalc,android,junit,Android,Junit,我对jUnit中的测试有问题。 这是我的测试课: public class MainActivityTest extends ActivityInstrumentationTestCase2<MainActivity> { Button button1, button2, button3, button4, button5, button6, button7, button8, button9, buttonResult, buttonPlus; Ed
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);
}
});
}
}
这是一个简单的计算器。我想测试结果,并等于结果。要检查结果,我要单击按钮并检查editText中的文本。但是有点不对劲,因为即使我将RESULT
设置为22
上,我在testPlus()
中也没有得到错误。来自该方法的单击按钮后的结果应在33.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);
}
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);
}