Не всегда правильно проверяйте гравитацию textView - PullRequest
0 голосов
/ 20 апреля 2019

Android Studio 3.4

Вот мой xml:

<androidx.constraintlayout.widget.ConstraintLayout
                        android:id="@+id/binContainer"
                        android:layout_width="0dp"
                        android:layout_height="0dp"
                        android:layout_marginStart="@dimen/half_default_margin"
                        android:layout_marginTop="@dimen/default_margin"
                        android:layout_marginBottom="@dimen/half_default_margin"
                        android:background="@{item.binance_pseudo_wallet.micro_wallet.inTrade ? @color/wallet_in_trade_color : @color/wallet_not_in_trade_color}"
                        app:layout_constraintBottom_toBottomOf="parent"
                        app:layout_constraintEnd_toStartOf="@+id/bitContainer"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintTop_toTopOf="parent">

                        <TextView
                            android:id="@+id/binanceTextView"
                            style="@style/valueTextViewStyle"
                            android:layout_width="0dp"
                            android:layout_height="@dimen/min_height"
                            android:background="@color/mcgpalette0_100"
                            android:gravity="center"
                            android:text="@string/binance"
                            android:textAllCaps="true"
                            app:layout_constraintEnd_toEndOf="parent"
                            app:layout_constraintHorizontal_bias="0.5"
                            app:layout_constraintStart_toStartOf="parent"
                            app:layout_constraintTop_toTopOf="parent" />

                        <TextView
                            android:id="@+id/binInTradeLabelTextView"
                            style="@style/labelTextViewStyle"
                            android:layout_width="@dimen/wallet_label_width"
                            android:layout_height="wrap_content"
                            android:layout_marginStart="@dimen/quarter_default_margin"
                            android:text="@string/in_trade"
                            app:layout_constraintBottom_toBottomOf="@+id/binInTradeValueTextView"
                            app:layout_constraintStart_toStartOf="parent"
                            app:layout_constraintTop_toTopOf="@+id/binInTradeValueTextView" />

                        <TextView
                            android:id="@+id/binInTradeValueTextView"
                            style="@style/valueTextViewValueStyle"
                            android:layout_width="0dp"
                            android:layout_height="wrap_content"
                            android:layout_marginStart="@dimen/half_default_margin"
                            android:layout_marginTop="@dimen/half_default_margin"
                            android:gravity="start"
                            android:text="@{String.valueOf(item.binance_pseudo_wallet.micro_wallet.inTrade)}"
                            app:layout_constraintEnd_toEndOf="parent"
                            app:layout_constraintStart_toEndOf="@+id/binInTradeLabelTextView"
app:layout_constraintTop_toBottomOf="@+id/binanceTextView" />

Я хочу проверить гравитацию на binanceTextView и на binInTradeValueTextView .

Здесь пользовательский сопоставитель:

fun withTextViewGravity(expectedValue: Int): Matcher<View> {
        return object : BoundedMatcher<View, TextView>(TextView::class.java) {

            override fun matchesSafely(textView: TextView): Boolean {
                val currentGravity = textView.gravity
                return currentGravity == expectedValue
            }

            override fun describeTo(description: Description) {
                description.appendText("with gravity: ")
                description.appendValue(expectedValue)
            }
        }
}

Тест Эспрессо для binanceTextView

    @Test
    fun binance_gravity() {
        onView(withId(R.id.binanceTextView))
                .check(matches(withTextViewGravity(Gravity.CENTER)))
}

Пройденный тест, потому что currentGravity и Ожидаемое значение = 17 .В результате соответствует Безопасно возвращает true.

Хорошо.

Теперь я хочу проверить binInTradeValueTextView

@Test
    fun binInTradeValue_gravity() {
        onView(withId(R.id.binInTradeValueTextView))
                .check(matches(withTextViewGravity(Gravity.START)))
}

Ноэтот тест не пройден.Потому что: currentGravity = 8388659 и Ожидаемое значение = 8388611

Почему currentGravity и Ожидаемое значение не равны

...