English 中文(简体)
Testing AdapterView
  • 时间:2024-03-24 04:11:48

Espresso Testing Framework - AdapterView


Previous Page Next Page  

Adapter 观点是一种特殊的观点,其具体目的是利用Adapter从基本数据来源收集类似产品清单和用户联系等信息。 数据来源可以是复杂的数据库条目的简单清单。 源自AdapterView的一些观点如下:ListViewGridViewSpinner

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 ——MigrateAndroidX 选项菜单。

    删除主要活动中的缺省设计,并添加ListViewact_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,以具体说明清单观点的项目模板。 页: 1

<?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);
}

    如今,该法典已经编纂并运行。 。 页: 1

Compile The Code

    现在开放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());
}

    最后,使用和刺.室的环境菜单进行测试,检查所有测试案例是否成功。

Advertisements