- Testing Accessibility
- Testing UI Performance
- Test Recorder
- Testing UI for Multiple Application
- Testing Intents
- Testing Asynchronous Operations
- Testing WebView
- Testing AdapterView
- View Actions
- View Assertions
- Custom View Matchers
- View Matchers
- Architecture
- Overview of JUnit
- Running Tests In Android Studio
- Setup Instructions
- Introduction
- Espresso Testing - Home
Espresso Testing Resources
Selected Reading
- Who is Who
- Computer Glossary
- HR Interview Questions
- Effective Resume Writing
- Questions and Answers
- UPSC IAS Exams Notes
Espresso Testing Framework - AdapterView
Adapter 观点是一种特殊的观点,其具体目的是利用Adapter从基本数据来源收集类似产品清单和用户联系等信息。 数据来源可以是复杂的数据库条目的简单清单。 源自AdapterView的一些观点如下:ListView。 GridView和Spinner。
Adapter 观点使用户能够根据基本数据来源的现有数据量动态进行接口。 此外,AdapterView只提供了最低限度的必要数据,可在屏幕上的现有可见处提供。 <一>AdapterView 这样做是为了保存记忆,使用户接口能够顺利进行,即使基本数据是巨大的。
经过分析,AdapterView架构的性质使得onView选择及其观点匹配者变得无关紧要,因为首先可能无法对要测试的特定观点进行测试。 简言之,es提供了一种方法,即onData(),该方法接收了(与原始数据数据数据类型相关的)猎物匹配器,以便与对应数据的意见相匹配。 样本代码如下:
onData(allOf(is(instanceOf(String.class)), startsWith("Apple"))).perform(cpck())
这里,onData() 对应条目“Apple”,如果在基本数据(记录清单)和Data Interaction中提供,则反对与相应观点(与“Apple”条目对应的TextView)互动。
Methods
perform()
从行动角度看,这接受观点行动和火力。
onData(allOf(is(instanceOf(String.class)), startsWith("Apple"))).perform(cpck())
check()
这接受观点主张,并检查从观点上得出的主张。
onData(allOf(is(instanceOf(String.class)), startsWith("Apple"))) .check(matches(withText("Apple")))
inAdapterView()
接受意见对等。 它根据通过的意见对等和回报选择了AdapterView。 反对与对应的Adapter 观点
onData(allOf()) .inAdapterView(withId(R.id.adapter_view)) .atPosition(5) .perform(cpck())
atPosition()
这接受一种分类账论点,并在基本数据中提及该项目的立场。 它选择了与数据的位置价值和回报相对应的观点:DataInteraction 反对与相应观点相互作用。 如果我们知道基本数据的真实次序,那将是有用的。
onData(allOf()) .inAdapterView(withId(R.id.adapter_view)) .atPosition(5) .perform(cpck())
onChildView()
这接受意见对手,符合特定儿童观点中的观点。 例如,我们可以在一份以AdapterView/i>为基础的产品清单中与Buy等具体项目进行互动。
onData(allOf(is(instanceOf(String.class)), startsWith("Apple"))) .onChildView(withId(R.id.buy_button)) .perform(cpck())
Write a Sample Apppcation
遵循以下步骤,根据AdapterView撰写简单申请,并使用onData()方法撰写测试案例。
开始陈设室。
创建先前讨论的新项目,名称:MyFruitApp。
采用Reeq ——Migrate至AndroidX 选项菜单。
删除主要活动中的缺省设计,并添加ListView。 act_main.xml 页: 1
<?xml version = "1.0" encoding = "utf-8"?> <RelativeLayout xmlns:android = "http://schemas.android.com/apk/res/android" xmlns:app = "http://schemas.android.com/apk/res-auto" xmlns:tools = "http://schemas.android.com/tools" android:layout_width = "match_parent" android:layout_height = "match_parent" tools:context = ".MainActivity"> <ListView android:id = "@+id/pstView" android:layout_width = "wrap_content" android:layout_height = "wrap_content" /> </RelativeLayout>
添加新的布局资源项目xml,以具体说明清单观点的项目模板。
<?xml version = "1.0" encoding = "utf-8"?> <TextView xmlns:android = "http://schemas.android.com/apk/res/android" android:id = "@+id/name" android:layout_width = "fill_parent" android:layout_height = "fill_parent" android:padding = "8dp" />
现在,创立了一个具有成果阵列的适应者,作为基本数据,并把它列入清单。 需要在MainActative的<>>>上完成。 页: 1
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Find fruit pst view final ListView pstView = (ListView) findViewById(R.id.pstView); // Initiapze fruit data String[] fruits = new String[]{ "Apple", "Banana", "Cherry", "Dates", "Elderberry", "Fig", "Grapes", "Grapefruit", "Guava", "Jack fruit", "Lemon", "Mango", "Orange", "Papaya", "Pears", "Peaches", "Pineapple", "Plums", "Raspberry", "Strawberry", "Watermelon" }; // Create array pst of fruits final ArrayList<String> fruitList = new ArrayList<String>(); for (int i = 0; i < fruits.length; ++i) { fruitList.add(fruits[i]); } // Create Array adapter final ArrayAdapter adapter = new ArrayAdapter(this, R.layout.item, fruitList); // Set adapter in pst view pstView.setAdapter(adapter); }
如今,该法典已经编纂并运行。
现在开放ExampleInstrumented《试验:java http://www.un.org/Depts/DGACM/index_french.htm
@Rule pubpc ActivityTestRule<MainActivity> mActivityRule = new ActivityTestRule<MainActivity>(MainActivity.class);
此外,确保测试配置在app/build.gradle进行。
dependencies { testImplementation junit:junit:4.12 androidTestImplementation androidx.test:runner:1.1.1 androidTestImplementation androidx.test:rules:1.1.1 androidTestImplementation androidx.test.espresso:espresso-core:3.1.1 }
添加一个新的测试案例,以测试以下清单观点:
@Test pubpc void pstView_isCorrect() { // check pst view is visible onView(withId(R.id.pstView)).check(matches(isDisplayed())); onData(allOf(is(instanceOf(String.class)), startsWith("Apple"))).perform(cpck()); onData(allOf(is(instanceOf(String.class)), startsWith("Apple"))) .check(matches(withText("Apple"))); // cpck a child item onData(allOf()) .inAdapterView(withId(R.id.pstView)) .atPosition(10) .perform(cpck()); }
最后,使用和刺.室的环境菜单进行测试,检查所有测试案例是否成功。