这个答案是针对刚刚开始进行 Android 测试的人的。我将提供两个简单的示例来帮助您了解测试的工作原理。如果您按照接下来的 10 分钟进行操作,您就可以开始将测试添加到您自己的应用程序中。我想你会惊讶地发现它是如此简单。我当然是。
Android 测试简介
您将进行两种不同类型的测试。
-
本地单元测试。它们在 JVM(Java 虚拟机)上本地运行。因为他们是本地人,所以速度很快。您可以使用它们来测试代码中只需要 Java 而不需要 Android API 的部分。 (有时你可以制作一个假的 API 对象来在本地测试更多东西。这称为mocking。一个模拟
Context
是一个例子。)
-
仪器化测试。这些测试在真实设备或模拟器中运行。这使得它们比本地测试慢。但是,它们更加灵活,因为您可以使用完整的 Android API。
创建一个新项目,您将看到以下默认文件夹。
一切都已准备就绪,等待您创建测试。一切都已经准备好了!
如何创建本地单元测试
打开ExampleUnitTest
文件如上图所示。它应该看起来像这样:
public class ExampleUnitTest {
@Test
public void addition_isCorrect() throws Exception {
assertEquals(4, 2 + 2);
}
}
按双绿色箭头运行所有测试,或按单绿色箭头仅运行一项。 (在这种情况下,只有一个测试,因此它们都做同样的事情。)
它应该会通过(只要2 + 2
还是4
当你阅读这个答案时)。恭喜,您刚刚完成了第一次测试!
自己进行测试
让我们编写自己的测试。首先将此类添加到您的主应用程序项目中,以便我们可以测试一些内容:
public class MyClass {
public int add(int a, int b) {
return a + b;
}
}
现在改变addition_isCorrect()
测试类中的方法类似于以下代码(或者只是添加另一个具有不同名称的方法):
public class ExampleUnitTest {
@Test
public void addition_isCorrect() throws Exception {
MyClass myClass = new MyClass();
int result = myClass.add(2, 2);
int expected = 4;
assertEquals(expected, result);
}
}
再次运行它,您应该会看到它通过了。恭喜,您刚刚创建了自己的第一个测试! (嗯,从技术上讲,我想这是我的,但是,嘿,足够接近了。我的就是你的。)
如何创建仪器化测试
打开ExampleInstrumentedTest
文件。它应该看起来像这样:
@RunWith(AndroidJUnit4.class)
public class ExampleInstrumentedTest {
@Test
public void useAppContext() throws Exception {
// Context of the app under test.
Context appContext = InstrumentationRegistry.getTargetContext();
assertEquals("com.example.myapp", appContext.getPackageName());
}
}
再次按下其中一个绿色按钮。
只要您连接了真实设备或设置了模拟器,它就应该启动并运行您的应用程序。恭喜,您刚刚运行了第一次仪器测试!
自己进行测试
仪器测试使用Espresso运行测试。它有点像您自己的小机器人用户,您可以测试您的应用程序。您可以告诉它执行一些操作,例如按下按钮或读取 TextView 的属性。
您可以编写有关如何手动进行测试的说明,但由于我们才刚刚开始,所以让我们使用自动录音功能。这非常简单。
首先向您的 UI 添加一个按钮,以便我们可以使用。我这样做了:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.myapp.MainActivity">
<Button
android:id="@+id/myButton"
android:text="Click me"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</android.support.constraint.ConstraintLayout>
然后按运行 > 记录浓缩咖啡测试在菜单中。
启动后,单击模拟器中的按钮,然后在“录制”对话框中选择“确定”以完成。它应该自动生成以下测试代码。
@LargeTest
@RunWith(AndroidJUnit4.class)
public class MainActivityTest {
@Rule
public ActivityTestRule<MainActivity> mActivityTestRule = new ActivityTestRule<>(MainActivity.class);
@Test
public void mainActivityTest() {
ViewInteraction appCompatButton = onView(
allOf(withId(R.id.myButton), withText("Click me"), isDisplayed()));
appCompatButton.perform(click());
}
}
伟大的!您刚刚创建了第一个仪器测试!那太容易了。您可能应该添加一个断言以使其成为真正的测试,但这对于记录器来说也很容易做到。手表这个视频更深入一点。
进一步研究
我会先观看视频,然后阅读文档。这一切都非常有帮助。最后一个链接是一系列文章,其中涵盖了选择测试内容时需要考虑的一些重要事项。
-
Android 测试模式(Android 开发者的短视频系列)
-
开始测试(安卓文档)
- 通过 TDD 提高代码质量的三个步骤