【问题标题】:How to pass dynamic stream arguments in a method in parametrized tests (Junit5)如何在参数化测试中的方法中传递动态流参数(Junit5)
【发布时间】:2021-03-05 08:25:28
【问题描述】:

我创建了一个 Stream 方法,其中包含我想在测试中传递的参数。我从 3 个不同的实体获取数据。我创建了两个对象(电子邮件、密码),我想在其中保存这些参数的值并将它们传递给登录方法。问题是它们总是为空。

@ParameterizedTest
@MethodSource("adminCredentials")

@Test
void loginSysAdmin() {
    adminWelcomePage.loginAdminParameters(email, password);
    adminHomePage.verifyLoggedSysAdminNameAndRole(sysAdminEntity);
    // by default
    usersPage.verifyUsersPage();
    adminHomePage.verifyUsersTabIsPresent();
    adminHomePage.verifyScreeningsTabIsPresent();
    adminHomePage.verifyAdminsTabIsPresent();
    adminHomePage.verifyAccountsTabIsPresent();
    adminHomePage.verifyLocationsTabIsPresent();
}


private Stream<Arguments> adminCredentials() {
    return Stream.of(
            Arguments.of(email = sysAdminEntity.getEmail(), password = sysAdminEntity.getPassword()),
            Arguments.of(email = accAdminEntity.getEmail(), password = accAdminEntity.getPassword()),
            Arguments.of(email = regularAdminEntity.getEmail(), password = regularAdminEntity.getPassword())
    );
}

}

enter image description here

【问题讨论】:

  • 您是否尝试过定义像void loginSysAdmin(String email, String password)这样的参数?
  • 它们是在方法中定义的,放在不同的类中。我只是在测试中调用它:' public void loginAdminParameters(String email, String password) { sendKeys(emailField, email); sendKeys(密码字段,密码);点击(让GetStartedButton); } '
  • 您的测试方法中缺少参数。见baeldung.com/parameterized-tests-junit-5

标签: java arguments junit5 qa parameterized-tests


【解决方案1】:

您忘记将参数传递给您的测试方法。

@ParameterizedTest
@MethodSource("adminCredentials")
void loginSysAdmin(String email, String password) {
    // test code
}

几乎总是有一篇关于参数化测试的非常好的 Baeldung 文章。对于@MethodSource,请查看Section Method

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-23
    • 2019-04-08
    • 1970-01-01
    • 1970-01-01
    • 2017-10-12
    • 1970-01-01
    • 1970-01-01
    • 2017-05-23
    相关资源
    最近更新 更多