Hello World Espresso 示例

这是一个创建 hello world 示例的教程:用于此示例:Android Studio 2.3;

要开始使用 Android Studio 创建具有空活动的新项目。然后我们向 App 添加一些我们可以测试的简单功能:我们添加一个按钮,当点击在文本视图中显示 Hello World 时。

活动代码如下所示:

package com.example.testing.helloworld;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        final TextView textView = (TextView) findViewById(R.id.textView);

        findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                textView.setText("Hello World!");
            }
        });
    }
}

此活动的 activity_main 布局如下所示:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="" />

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Say Hello" />
</LinearLayout>

现在我们想要使用 espresso 来测试这个新创建的应用程序的行为。通常,你的应用程序本身的代码在 main 包中,单元测试在 test 内,Espresso 仪器测试在 androidTest 包内。如果你使用 Android Studio 创建一个新的空活动项目,它应该已经创建了这些包和类,它应该如下所示:

StackOverflow 文档

从 Espresso 开始,我们必须确保 espresso-core 依赖项包含在 build.gradle 文件中(请注意,它不是使用 compile 关键字注释,而是使用 androidTestCompile 注释)。Android studio 创建的 build.gradle 文件中的依赖项应如下所示:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:25.2.0'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    testCompile 'junit:junit:4.12'
}

现在所有设置完成后我们可以从实际测试开始:打开 ExampleInstrumentationTest 文件,你会发现里面已经有一个生成的 useAppContext 测试。我们将更改此测试类并创建测试以检查我们的应用程序行为:

@RunWith(AndroidJUnit4.class)
public class ExampleInstrumentedTest {

    @Rule
    public ActivityTestRule<MainActivity> mActivityRule = new ActivityTestRule<>(
        MainActivity.class, false, true);

    @Test
    public void checkHelloWorld() throws Exception {
        onView(withId(R.id.textView)).check(matches(withText("")));
        onView(withId(R.id.button)).perform(click());
        onView(withId(R.id.textView)).check(matches(withText("Hello World!")));
    }
}

通过运行 ExampleInstrumentedTest 类开始测试。然后,这个测试做了三件事:

  1. 它检查 textview 是否包含空字符串(“”)
  2. 它单击我们布局中的按钮
  3. 如果它包含 Hello World!,它会再次检查 textview 的文本。

顶部的 ActivityTestRule 定义测试哪个活动,并在测试开始时启动它。 (你也可以自动启动活动,然后手动在每个测试中启动它)

测试规则非常简单:

  • onView(withId(R.id.textView)) 通过我们的 activity_main 布局文件中的视图 ID 在当前屏幕内查找视图。
  • 然后 .check(matches(withText(""))); 对该视图执行测试用例。
  • .perform(click()) 对视图执行操作:此操作可以是点击,长按或滑动等。

这是一个从 android espresso Instrumentation 测试开始的教程,我希望它给了你一些见解!