在Android Studio中进行UI测试
来源:互联网 发布:完美芦荟胶淘宝官网 编辑:程序博客网 时间:2024/05/01 12:08
一、build.gradle 中配置
在defaultConfig中添加
testInstrumentationRunner “android.support.test.runner.AndroidJUnitRunner”
在dependencies中添加
androidTestCompile ‘com.android.support.test:runner:0.5’
androidTestCompile ‘com.android.support.test:rules:0.5’
androidTestCompile (‘com.android.support.test.espresso:espresso-core:2.2.2’)
不需要单独引入junit的依赖,因为androidTestCompile ‘com.android.support.test:runner:0.5’包含了junit.
如果同时在引入junit包,编译时,可能出现multidevix XXX 的问题,就是包冲突了。
二、为app添加简单的交互
在使用Espresso进行UI测试前,让我们为app添加一些Views和简单的交互。我们使用一个用户可以输入名字的EditText,欢迎用户的Button和用于输出的TextView。打开res/layout/activity_main.xml,粘贴如下代码:
activity_main.xml
<RelativeLayout 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" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"> <TextView android:id="@+id/textView" android:text="@string/hello_world" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <EditText android:hint="Enter your name here" android:id="@+id/editText" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@+id/textView"/> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Say hello!" android:layout_below="@+id/editText" android:onClick="sayHello"/></RelativeLayout>
还需要在MainActivity.java中添加onClick handler:
MainActivity.java
public void sayHello(View v){ TextView textView = (TextView) findViewById(R.id.textView); EditText editText = (EditText) findViewById(R.id.editText); textView.setText("Hello, " + editText.getText().toString() + "!");}
现在可以运行app并确认一切工作正常。在点击Run按钮之前,确认你的Run Configuration没有设置为运行测试。如需更改,点击下拉选项,选择app。
三、创建并运行Espresso测试
在工程的整体视图上,找到以(androidTest)后缀结尾的包名并创建一个新的Java类。可以将它命名为MainActivityInstrumentationTest,将如下代码粘贴过去。
** MainActivityInstrumentationTest.javapackage com.example.testing.testingexample;import android.support.test.InstrumentationRegistry;import android.support.test.espresso.action.ViewActions;import android.support.test.rule.ActivityTestRule;import android.support.test.runner.AndroidJUnit4;import android.test.ActivityInstrumentationTestCase2;import android.test.suitebuilder.annotation.LargeTest;import org.junit.After;import org.junit.Before;import org.junit.Rule;import org.junit.Test;import org.junit.runner.RunWith;import static android.support.test.espresso.Espresso.onView;import static android.support.test.espresso.action.ViewActions.click;import static android.support.test.espresso.action.ViewActions.closeSoftKeyboard;import static android.support.test.espresso.action.ViewActions.typeText;import static android.support.test.espresso.assertion.ViewAssertions.matches;import static android.support.test.espresso.matcher.ViewMatchers.withId;import static android.support.test.espresso.matcher.ViewMatchers.withText;@RunWith(AndroidJUnit4.class)@LargeTestpublic class MainActivityInstrumentationTest { private static final String STRING_TO_BE_TYPED = "Peter"; @Rule public ActivityTestRule<MainActivity> mActivityRule = new ActivityTestRule<>( MainActivity.class); @Test public void sayHello(){ onView(withId(R.id.editText)).perform(typeText(STRING_TO_BE_TYPED), closeSoftKeyboard()); //line 1 onView(withText("Say hello!")).perform(click()); //line 2 String expectedText = "Hello, " + STRING_TO_BE_TYPED + "!"; onView(withId(R.id.textView)).check(matches(withText(expectedText))); //line 3 }}
测试类通过AndroidJUnitRunner运行,并执行sayHello()方法。下面将逐行解释都做了什么:
1.首先,找到ID为editText的view,输入Peter,然后关闭键盘;
2.接下来,点击Say hello!的View,我们没有在布局的XML中为这个Button设置id,因此,通过搜索它上面的文字来找到它;
3.最后,将TextView上的文本同预期结果对比,如果一致则测试通过;
- 在Android Studio中进行UI测试
- 在Android Studio中进行单元测试和UI测试
- 在Android Studio中进行单元测试和UI测试
- 在Android Studio中进行单元测试和UI测试
- 在Android Studio中进行单元测试和UI测试
- 在Android Studio中进行单元测试和UI测试
- 在Android studio中进行单元测试和ui测试
- 在Android Studio中进行单元测试和UI测试
- 在Android Studio中进行单元测试和UI测试
- 在Android Studio中进行单元测试和UI测试
- 在Android Studio中进行单元测试和UI测试
- 在Android Studio中进行单元测试和UI测试
- 在Android Studio中进行单元测试和UI测试
- 在Android Studio中进行单元测试和UI测试
- 在Android Studio中进行单元测试和UI测试
- 在Android Studio中进行单元测试和UI测试
- 在Android Studio中进行单元测试和UI测试
- 在Android Studio中进行单元测试和UI测试
- 23.Merge k Sorted Lists
- AndroidStudio动态调试apk
- SSM/angularjs _ 文件的上传下载
- codeforces 285E. Positions in Permutations (容斥原理+DP)
- JProfiler之java剖析工具
- 在Android Studio中进行UI测试
- java中的阻塞线程
- 您的设计模式——建造者模式【Builder Pattern】
- C++建模实战1-高考录取系统(7)
- PHP中的正则表达式的优化
- LeetCode | 167. Two Sum II
- 设计模式随笔之适配器模式(Adapter)
- 积分系统文件上传之FormData对象
- Codeforces Beta Round #9 (Div. 2 Only) D. How many trees? dp