public class CalculatorHitSomeButtons extends ActivityInstrumentationTestCase <Calculator>{
public boolean setup = false;
private static final String TAG = "CalculatorTests";
Calculator mActivity = null;
Instrumentation mInst = null;
public CalculatorHitSomeButtons() {
super("com.android.calculator2", Calculator.class);
}
@Override
protected void setUp() throws Exception {
super.setUp();
mActivity = getActivity();
mInst = getInstrumentation();
}
@Override
protected void tearDown() throws Exception {
super.tearDown();
}
@LargeTest
public void testPressSomeKeys() {
Log.v(TAG, "Pressing some keys!");
// Make sure that we clear the output
press(KeyEvent.KEYCODE_ENTER);
press(KeyEvent.KEYCODE_CLEAR);
// 3 + 4 * 5 => 23
press(KeyEvent.KEYCODE_3);
press(KeyEvent.KEYCODE_PLUS);
press(KeyEvent.KEYCODE_4);
press(KeyEvent.KEYCODE_9 | KeyEvent.META_SHIFT_ON);
press(KeyEvent.KEYCODE_5);
press(KeyEvent.KEYCODE_ENTER);
assertEquals(displayVal(), "23");
}
@LargeTest
public void testTapSomeButtons() {
Log.v(TAG, "Tapping some buttons!");
// Make sure that we clear the output
tap(R.id.equal);
tap(R.id.del);
// 567 / 3 => 189
tap(R.id.digit5);
tap(R.id.digit6);
tap(R.id.digit7);
tap(R.id.div);
tap(R.id.digit3);
tap(R.id.equal);
assertEquals(displayVal(), "189");
// make sure we can continue calculations also
// 189 - 789 => -600
tap(R.id.minus);
tap(R.id.digit7);
tap(R.id.digit8);
tap(R.id.digit9);
tap(R.id.equal);
// Careful: the first digit in the expected value is \u2212, not "-" (a hyphen)
assertEquals(displayVal(), mActivity.getString(R.string.minus) + "600");
}
// helper functions
private void press(int keycode) {
mInst.sendKeyDownUpSync(keycode);
}
private boolean tap(int id) {
View view = mActivity.findViewById(id);
if(view != null) {
TouchUtils.clickView(this, view);
return true;
}
return false;
}
private String displayVal() {
CalculatorDisplay display = (CalculatorDisplay) mActivity.findViewById(R.id.display);
assertNotNull(display);
EditText box = (EditText) display.getCurrentView();
assertNotNull(box);
return box.getText().toString();
}
}
分享到:
相关推荐
总结来说,Android中的JUnit测试涉及环境配置、测试类和方法编写、模拟对象、UI测试、覆盖率分析以及测试策略等多个方面。熟练掌握这些知识点,能帮助开发者编写出更健壮、更可靠的Android应用。
然后,在这个目录下创建一个新的Java类,继承自`androidx.test.ext.junit.runners.AndroidJUnit4`。这样,你的测试类就可以使用JUnit4的注解了。 4. **编写测试用例** 使用JUnit的`@Test`注解标记测试方法,这些...
在进行Android JUnit测试时,还需要注意几点最佳实践: 1. 测试应尽可能独立,不依赖外部状态或网络。 2. 尽量减少测试时间,避免长时间运行的测试。 3. 使用`@Before`和`@After`方法设置测试前后的环境。 4. 编写...
`junitreport`是一个用于处理JUnit测试结果的XML格式报告的工具。它可以将测试结果转换成HTML格式,方便查看和分析。在Android项目中,我们可以通过配置`AndroidManifest.xml`文件,使测试过程中生成的JUnit XML报告...
而`android-junit-report`库则是用于生成JUnit测试报告的工具。这个库能够将测试结果转化为格式化的HTML报告,包括每个测试用例的详细信息、成功/失败的状态以及执行时间等。这有助于开发者更好地理解和分析测试结果...
1. **测试类和测试方法**:在JUnit中,我们创建一个继承自`androidx.test.ext.junit.runners.AndroidJUnit4`的测试类,并在其中定义一系列带有`@Test`注解的方法。这些方法就是测试用例,每个方法测试代码的一个特定...
为了在Android环境中运行单元测试,我们需要使用`@RunWith(AndroidJUnit4::class)`注解(对于Kotlin)或`@RunWith(AndroidJUnit4.class)`(对于Java),这将使JUnit4与Android环境兼容。此外,`@Test`注解用于标记...
@RunWith(AndroidJUnit4::class) class MainActivityTest { @Rule @JvmField val activityScenarioRule = ActivityScenarioRule(MainActivity::class.java) @Test fun testButtonClick() { val button = on...
3. **编写测试类**:在`src/androidTest/java`目录下创建测试类,继承自`AndroidJUnit4`,例如`HelloAndroidTest.kt`。在测试类中,可以定义一系列`@Test`注解的方法,每个方法代表一个测试用例。 4. **编写测试...
1. 创建测试类:在Android Studio中,可以右键点击要测试的源代码文件,选择"New > Test > JUnit Test"来生成对应的测试类。测试类通常位于`src/test/java`目录下,遵循`<package_name>.test.<original_class_name>`...
测试用例写好后,我们可以使用Android Studio的JUnit测试运行器或者命令行工具(如gradlew)来执行测试。测试结果将以日志的形式输出,包括每个测试用例的名称、结果和运行时间。如果需要更详细的报告,还可以配置...
除了基本的JUnit测试,Android Studio还支持 Espresso 和 Robolectric 这样的UI测试框架。Espresso用于进行界面交互测试,它能够模拟用户对UI的操作,验证UI状态。而Robolectric则是在没有真实设备或模拟器的情况下...
在Android环境中,我们使用AndroidX测试库,它是JUnit4的扩展,提供了与Android平台兼容的测试支持。在这个实例中,你可能发现了名为"TestAut01"的文件,这很可能是一个测试类,包含了对应用程序"Aut01"中各个组件的...
在JUnit或Espresso等测试框架中,我们可以编写测试用例来模拟用户行为并验证Dialog的行为。例如,我们可以使用`onView`和`performClick`来模拟点击“确定”或“取消”按钮: ```java @Test public void testDialog...
在实际项目中,我们可以结合持续集成工具(如Jenkins)和测试报告插件(如JUnit Reports)使用Robotium,实现自动化测试的流程化。例如,当代码提交到版本控制系统时,持续集成服务器可以自动触发构建和测试,快速...
1. **JUnit测试**:JUnit主要用于测试Activity的逻辑代码,不涉及UI部分。你可以创建一个继承自`androidx.test.ext.junit.runners.AndroidJUnit4`的测试类,并使用`@Test`注解标记测试方法。在测试中,可以通过`...
比如,我们可以测试按钮点击事件是否正确触发了相应的回调。 对于依赖于Android系统服务或组件的测试,我们可以使用Robolectric库。它是一个开源项目,能够模拟Android系统,使得测试能在没有真实设备或模拟器的...
总之,Java在Android自动化测试中发挥着至关重要的作用,结合JUnit、Espresso、Mockito等工具,我们可以构建高效且可靠的测试框架。对于“AndroidRobot”项目,它的出现可能是为了简化自动化测试的实施,提高测试...
首先,我们了解到传统的Android自动化测试通常依赖于JUnit框架和Android SDK中的`android.test`包,但这需要应用程序的源代码,这对于许多只做黑盒测试的测试工程师来说并不实际。 Android系统中的权限控制严格限制...