0

How initialize binding in test class? , I'm trying to write UI tests using espresso and I want to fetch views by binding.

@RunWith(AndroidJUnit4::class) class AuthFragmentTest{

private lateinit var scenario: FragmentScenario<AuthFragment>
private lateinit var binding: FragmentAuthBinding
private lateinit var usernameEditText: TextInputEditText
private lateinit var passwordEditText: TextInputEditText
private lateinit var submitButton: MaterialButton

@Before
fun setup(){
    scenario = launchFragmentInContainer(themeResId = R.style.Theme_Main)
    scenario.moveToState(Lifecycle.State.STARTED)
    binding
    usernameEditText = binding.usernameInputEditText
    passwordEditText = binding.passwordInputEditText
    submitButton = binding.uSubmit
}

@Test
fun testUserInput(){
    usernameEditText.setText("user")
    passwordEditText.setText("pass")
    Espresso.closeSoftKeyboard()
    val a = submitButton.isVisible
    Thread.sleep(10000)
    assertThat(a).isTrue()
}
misterios
  • 300
  • 1
  • 2
  • 15
  • Have a look [here](https://stackoverflow.com/questions/70364122/error-inflating-viewbinding-in-test-class-binary-xml-file-line-38-binary-xml/70364919#70364919), it may be useful. You need to pass an inflater to the binding method to set it's views. – Tyler V Dec 20 '21 at 23:27
  • You can type the text in EditText in testcases using by doing this, `Espresso.onView(ViewMatchers.withId(<>)).perform(ViewActions.scrollTo()).perform(ViewActions.typeText("Text you want to type"));` – Nilesh Prajapati Dec 21 '21 at 10:37

0 Answers0