В моем проекте Android у меня есть пользовательский сопоставитель:
fun withFontSizeValue(expectedValueSp: Float): Matcher<View> {
return object : BoundedMatcher<View, View>(View::class.java) {
public override fun matchesSafely(view: View): Boolean {
if (view !is TextView) {
return false
}
val textView = view as TextView
val actualSizelsPx = textView.textSize
//float actualSizeSp = actualSizelsPx / view.getResources().getDisplayMetrics().scaledDensity;
val actualSizeSp = AndroidUtil.px2Sp(view.getContext(), actualSizelsPx)
return java.lang.Float.compare(actualSizeSp, expectedValueSp) == 0
}
override fun describeTo(description: Description) {
description.appendText("with fontSize: ")
description.appendValue(expectedValueSp)
}
}
}
мой xml
<TextView
android:id="@+id/toolbaTitleTextView"
style="@style/textViewOneLine"
android:layout_width="0dp"
android:layout_height="0dp"
android:gravity="center"
android:text="@{title}"
android:textAllCaps="true"
android:textColor="@android:color/white"
android:textSize="@dimen/tool_bar_text_size"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="@+id/toolBar"
app:layout_constraintEnd_toEndOf="@+id/toolBar"
app:layout_constraintStart_toStartOf="@+id/toolBar"
app:layout_constraintTop_toTopOf="@+id/toolBar" />
И использовать для проверки TextView textSize
:
onView(withId(R.id.toolbaTitleTextView)).check(matches(withFontSizeValue(13f)))
Nice. Это нормально работает.
Но мне нужно использовать smt так:
onView(withId(R.id.toolbaTitleTextView)).check(matches(withFontSizeValue(R.dimen.tool_bar_text_size)))
в размерном. Xml
<dimen name="tool_bar_text_size">13sp</dimen>
Как я могу сделать эту проверку? По R.dimen.tool_bar_text_size