【问题标题】:How to create a Page/Screen Object Model in Jetpack Compose Testing如何在 Jetpack Compose 测试中创建页面/屏幕对象模型
【发布时间】:2023-01-23 22:20:34
【问题描述】:

对于基本测试,如果我创建一个如下所示的测试类,它就可以正常工作。

class MyComposeTest {

    @get:Rule
    val composeTestRule = createAndroidComposeRule<MainActivity>()

    @Test
    fun myTest() {

        composeTestRule.onNodeWithText("Login").performClick()

        composeTestRule.onNodeWithText("Home").assertIsDisplayed()
    }
}

但是,如果我想将其中一些抽象为单独的类以进行端到端测试怎么办?

例如我想创建一个登录页面类,其中包含用于登录的所有定位器和类似的主页,并将我的测试简化为

@Test
fun myTest() {
   val login = LoginPage() 
   val home = HomePage()

   login.loginBtn.performClick() 
   home.homeTxt.assertIsDisplayed()
}

我不确定我的页面类(带有定位器)应该是什么样子才能使这成为可能。

【问题讨论】:

    标签: android-jetpack-compose android-espresso android-jetpack android-jetpack-compose-testing


    【解决方案1】:

    您应该在页面的构造函数中传递 composeTestRule。代码如下所示:

    class BaseTestSuite {
    
      @get:Rule
      val composeTestRule = createAndroidComposeRule<MainActivity>()
    }
    
    class LoginPage(composeTestRule: ComposeContentTestRule) {
      val loginBtn = onNodeWithText("Login")
    
      func tapLoginButton() {
        loginBtn.performClick() 
      }
    }
    
    class MyTestSuite() : BaseTestSuite {
      val loginPage = LoginPage(composeTestRule) 
    
      @Test
      fun myTest() {
        loginPage.tapLoginButton()
    
        // rest of the code
    
    }
    

    【讨论】:

      猜你喜欢
      • 2021-10-27
      • 1970-01-01
      • 2021-12-31
      • 2021-09-02
      • 2023-03-28
      • 1970-01-01
      • 2022-08-10
      • 1970-01-01
      • 2022-10-23
      相关资源
      最近更新 更多