Android studio中的Espresso测试

时间:2016-04-04 09:51:51

标签: android android-espresso

可以在应用程序代码之外的android studio中编写Espresso测试吗? 我在Espresso文档中读到可以使用浓缩咖啡创建黑盒测试,但我找不到如何操作

4 个答案:

答案 0 :(得分:1)

使用以下依赖项创建单独的项目:

compile 'com.android.support.test.espresso:espresso-core:2.2.2'
compile 'com.android.support.test:runner:0.5'
compile 'junit:junit:4.12'

我使用此清单

<?xml version="1.0" encoding="utf-8"?>
<manifest package="com.test.test"xmlns:android="http://schemas.android.com/apk/res/android">

    <instrumentation
        android:name="android.support.test.runner.AndroidJUnitRunner"
        android:targetPackage="com.imc.imc" >
    <instrumentation>

 </manifest>

我在src / main / java / com.test.test中创建一个名为MainActivityTest的新类

public class MainActivityTest {


    @Rule
    public ActivityTestRule<?> mActivityRule = newActivityTestRule("com.imc.imc.MainActivity");

    @NonNull
    private ActivityTestRule newActivityTestRule(String className) {
        return new ActivityTestRule(activityClass(className));
    }

    private static Class<? extends Activity> activityClass(String className) {
        try {
            return (Class<? extends Activity>) Class.forName(className);
        } catch (ClassNotFoundException e) {
            throw new RuntimeException(e);
        }
    }
private static int getId(String id) {
    Context targetContext = InstrumentationRegistry.getTargetContext();
    String packageName = targetContext.getPackageName();
    return targetContext.getResources().getIdentifier(id, "id", packageName);
}

    @Test
    public void mytest() {
        onView(withId(getId("button"))).perform(click());;
    }


}

但它不起作用!!!!!!

答案 1 :(得分:1)

您可以使用UI Automator进行跨应用程序功能的UI测试, 例如,与使用SettingsAPI创建的GPS对话框进行交互。 详细了解here.

enter image description here 单击确定按钮,如下所示: -

=MID(D62,SEARCH("",D62,15)+1,SEARCH(" ",D62,SEARCH(" ",D62,1)+4)-SEARCH(" ",D62,1))

答案 2 :(得分:0)

看看我们的discussion thread at reddit,有一个解决方案。

此外,我正在为Android Studio开发一个插件,这将使这很容易。您可以subscribe for news about it,我会在准备就绪时通知您。

答案 3 :(得分:0)

,可以在android studio中编写应用程序代码之外的Espresso测试。

除仪器测试外的所有测试类别均应位于(test)文件夹中,如下图所示

image

下面是一个示例测试类,该示例使用espresso测试检查登录是否正确。

@RunWith(AndroidJUnit4.class)
public class MainActivityTest {

    @Rule
    public ActivityTestRule<MainActivity> activityRule
                = new ActivityTestRule<>(MainActivity.class);

    @Test
    public void testLoginSuccess() {

        onView(withId(R.id.et_username)).perform(typeText("testuser"), closeSoftKeyboard());

        onView(withId(R.id.et_password)).perform(typeText("test123"), closeSoftKeyboard());

        onView(withId(R.id.btn_login)).perform(click());

        onView(withId(R.id.tv_welcome)).check(matches(isDisplayed()));
    }   
}

我在博客中用一个简单的登录示例here对此做了解释。