Android UI测试,不推荐的ViewAsserts assertHorizontalCenterAligned的替代方案是什么?
在Android UI测试中,我们有一个API级别24中不推荐使用的类 这个类有一些方法,比如测试一个视图是否在另一个视图中水平居中 在新的浓缩咖啡中,这种方法的替代品是什么Android UI测试,不推荐的ViewAsserts assertHorizontalCenterAligned的替代方案是什么?,android,android-espresso,android-testing,Android,Android Espresso,Android Testing,在Android UI测试中,我们有一个API级别24中不推荐使用的类 这个类有一些方法,比如测试一个视图是否在另一个视图中水平居中 在新的浓缩咖啡中,这种方法的替代品是什么 它有左对齐、右对齐、上对齐和下对齐的断言,但没有中心断言。首先,我的答案不使用位置断言,而是 我创建了一个自定义ViewAsserts,它可以在任何Android平台上运行 你的观点 假设您有以下xml视图 <?xml version="1.0" encoding="utf-8"?> <RelativeL
它有左对齐、右对齐、上对齐和下对齐的断言,但没有中心断言。首先,我的答案不使用位置断言,而是 我创建了一个自定义ViewAsserts,它可以在任何Android平台上运行 你的观点 假设您有以下xml视图
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="merchantapp.ul.com.myapplication.MainActivity">
<RelativeLayout
android:id="@+id/ll"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:id="@+id/lll"
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_centerInParent="true"
android:orientation="vertical"></LinearLayout>
</RelativeLayout>
</RelativeLayout>
您的测试单元
创建您的测试单元
@RunWith(AndroidJUnit4.class)
public class ExampleInstrumentedTest {
@Rule
public ActivityTestRule<MainActivity> mActivityRule =
new ActivityTestRule<>(MainActivity.class);
@Test
public void testHorizantalCenter() {
onView(withId(R.id.lll)).check(ViewAssertions.matches(alignHorizantalWith(mActivityRule.getActivity().findViewById(R.id.ll))));
}
}
@RunWith(AndroidJUnit4.class)
公共类示例InstrumentedTest{
@统治
公共活动测试规则mActivityRule=
新的ActivityTestRule(MainActivity.class);
@试验
public void testHorizantalCenter(){
onView(带id(R.id.lll)).check(viewsertions.matches(与(mActivityRule.getActivity().findViewById(R.id.ll))对齐);
}
}
测试将通过
描述
想法很简单,我们有两个视图,我们称它们为view1
和view2
通过获取x轴并将其相加到宽度的一半,计算两个视图中心的水平x
然后检查这两个中心是否相同(我不是在检查它们是否相等,而是在检查它们之间的差值是否小于1,这是因为除以浮点。从数学角度看,差值永远不会超过0.5)
我希望这对您有好处我以前就有过这样的要求,我构建了我的自定义ViewAsserts。但是,我没有使用PositionAssertions,因为我希望它能在所有平台上工作,你能告诉我我的想法吗?嗨,William,是的,我考虑过扩展PositionAssertions,我的想法是视图水平居中,例如,如果视图和容器之间的左右距离相同。但不幸的是,positionassertions类是最终的,不能扩展
@RunWith(AndroidJUnit4.class)
public class ExampleInstrumentedTest {
@Rule
public ActivityTestRule<MainActivity> mActivityRule =
new ActivityTestRule<>(MainActivity.class);
@Test
public void testHorizantalCenter() {
onView(withId(R.id.lll)).check(ViewAssertions.matches(alignHorizantalWith(mActivityRule.getActivity().findViewById(R.id.ll))));
}
}