【发布时间】: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())
);
}
}
【问题讨论】:
-
您是否尝试过定义像
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