Reputation: 15
i try to implement a localisation bundle directly to trigger a test multiple times over a parameterizedTest. How i can use the Strings of the ValueSource directly as String parameter of the test and then transform it into a RessourceBundles which can imediatly use the "getString"-method?
public static ResourceBundle bundleDE = ResourceBundle.getBundle("i18n", new Locale("de", "DE"));
public static ResourceBundle bundleEN = ResourceBundle.getBundle("i18n", new Locale("en", "EN"));
@ParameterizedTest
@ValueSource(strings = {"bundleEN", "bundleDE"})
public void checkSiteHeadline(String bundle) {
WebElement headline = driver.findElement((By.xpath("censored")));
assertEquals(bundle.getString("IMPRINT_HEADER"), headline.getAttribute("innerHTML"));
}
This here would work in a not parameterized test, but i dont want to write new lines for every language.
assertEquals(bundleEN.getString("IMPRINT_HEADER"), headline.getAttribute("innerHTML"));
Upvotes: 0
Views: 49
Reputation: 51
Use MethodSource:
public static ResourceBundle bundleDE = ResourceBundle.getBundle("i18n", new Locale("de", "DE"));
public static ResourceBundle bundleEN = ResourceBundle.getBundle("i18n", new Locale("en", "EN"));
static Stream<ResourceBundle> bundles() {
return Stream.of(bundleDE, bundleEN);
}
@ParameterizedTest
@MethodSource("bundles")
void checkSiteHeadline(ResourceBundle bundle) {
WebElement headline = driver.findElement((By.xpath("censored")));
assertEquals(bundle.getString("IMPRINT_HEADER"), headline.getAttribute("innerHTML"));
}
Upvotes: 1