我有一个包含50个奇怪的WebElements的页面,我想断言它们有正确的文本。我正在使用Page Objects,因此Test与对象分开,Test是断言必须存在的地方。
我不希望每个元素有50个单独的@Test's,所以我需要某种集合,List或数组来保存文本值,然后断言每个元素。但是,如果一个文本值错误,我不希望测试失败(可能是页面经常更新并包含50个值的情况)。对于每个断言,这都指向@Test的分离?
所以我需要在PageObject中为每个元素做一个driver.findElement(.....)。
然后,我需要将WebElement的值作为String(s)传递给测试类,最好是在一个方法中使用.getText())。
我需要断言测试类中50个值中的每个值都是正确的,最好是在一个@Test下,但如果一个值不正确,则测试失败。
我已经和它搏斗了几个小时,对不起,如果不清楚并为大量文字道歉;我是一个初学者 - 如果我能澄清请问。我很遗憾,这显然是一种常见的方法。
谢谢
答案 0 :(得分:1)
如果您使用的是JUnit 4.0+,则可以使用parameterized tests。
@RunWith(Parameterized.class)
@Parameters
的静态方法(这将返回一个嵌套的参数数组)上面的wiki链接示例:
@RunWith(Parameterized.class)
public class FibonacciTest {
@Parameters
public static Collection<Object[]> data() {
return Arrays.asList(new Object[][] {
{ 0, 0 }, { 1, 1 }, { 2, 1 }, { 3, 2 }, { 4, 3 }, { 5, 5 },{ 6, 8 }
});
}
private int fInput;
private int fExpected;
public FibonacciTest(int input, int expected) {
fInput= input;
fExpected= expected;
}
@Test
public void test() {
assertEquals(fExpected, Fibonacci.compute(fInput));
}
}