2014-01-22 2 views
0

을 사용하여 많은 수의 WebElements에 대한 어설 션 처리 올바른 텍스트가 있다고 주장하는 50 개의 홀수 WebElements가 포함 된 페이지가 있습니다. 나는 페이지 객체를 사용하여 테스트가 객체와 분리되어 있고 테스트는 어서션이 살아 있어야하는 곳이다.Webdriver 페이지 개체 모델

각 요소에 대해 @ seperate @ Test가 필요하지 않기 때문에 텍스트 값을 보유하고 각각에 대해 어설 션하려면 일종의 컬렉션, List 또는 배열이 필요합니다. 그러나 한 텍스트 값이 잘못되면 테스트를 수행하지 않으려합니다 (자주 업데이트되고 50 개의 값이 포함 된 페이지의 예상되는 시나리오). 이 점은 각 어설 션에 대해 @ Test를 별도로 가리 킵니까?

그래서 내가으로 (A driver.findElement을 할 필요가 ..... 각 요소를 들어, PageObject 인치

나는 다음 문자열 (들)로 WebElement의 값을 전달해야

, .getText()를 사용하여) 테스트 클래스로, 바람직하게는 하나의 메소드로 호출한다.

테스트 클래스의 50 개 값 각각에 대해 텍스트가 올바르다 고 주장해야합니다. @Test가 하나 인 것이 바람직하지만 한 값이 정확하지 않으면 테스트가 실패하지 않습니다.

나는 이것에 대해 몇 시간 동안 씨름 해 왔습니다. 미안하지만이 점이 분명하지 않다면 사과드립니다. 나는 초심자의 무언가이다 - 나는 명확하게 할 수 있으면 묻는다. 분명히 이것에 대한 공통된 접근법이 있습니다.

감사

답변

1

당신의 JUnit 4.0 이상을 사용하는 경우, 당신은 parameterized tests을 사용할 수 있습니다. 애노테이션

  • 테스트 클래스 @RunWith(Parameterized.class)
  • 주석 @Parameters (이 PARAMS의 중첩 배열을 반환한다) 클래스에
  • 테스트 PARAMS의 각 세트에 대해 한번 실행된다와
  • 정적 메소드

위의 위키 링크의 예는 다음과 같습니다.

@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)); 
    } 
} 
+0

감사합니다. ! – Steerpike