此答案适用于刚开始进行 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 的属性。
您可以编写有关如何手动进行测试的说明,但由于我们才刚刚开始,让我们使用auto-record function。超级简单。
首先在您的 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>
然后按菜单中的运行 > 录制 Espresso 测试。
启动后,单击模拟器中的按钮,然后在“录制”对话框中选择“确定”完成。它应该会自动生成以下测试代码。
@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());
}
}
太棒了!您刚刚创建了您的第一个仪器测试!那非常容易。您可能应该添加一个断言以使其成为真正的测试,但这也很容易使用记录器来完成。观看this video 以更深入地了解。
进一步研究
我会先观看视频,然后通读文档。这一切都非常有帮助。最后一个链接是一系列文章,其中涵盖了在选择测试内容时要考虑的一些重要事项。