0

我有一个包含 50 个奇怪的 WebElements 的页面,我想断言它们具有正确的文本。我正在使用页面对象,因此测试与对象分开,测试是断言必须存在的地方。

我不希望每个元素有 50 个单独的 @Test,所以我需要某种集合、列表或数组来保存文本值,然后针对每个元素进行断言。但是,如果一个文本值有误,我不希望测试失败(可能的情况是页面频繁更新并包含 50 个值)。这指向每个断言的单独@Test?

所以我需要在 PageObject 中为每个元素做一个 driver.findElement(By.....

然后,我需要使用 .getText()) 将 WebElement 的值作为字符串传递给测试类,最好采用一种方法。

我需要断言测试类中 50 个值中的每一个的文本都是正确的,最好在一个 @Test 下,但如果一个值不正确,则测试不会失败。

我已经为此苦苦挣扎了几个小时,如果不清楚,我很抱歉,并为这段文字道歉;我是一个初学者 - 如果我能澄清,请询问。显然,我缺少一种通用的方法。

谢谢

4

1 回答 1

1

如果您使用的是 JUnit 4.0+,则可以使用参数化测试

  • 带注释的测试类@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));
    }
}
于 2014-01-22T21:37:37.843 回答