2014-06-16 7 views
2

상황 : 나는 두 개의 테스트 a()와 b()가 있습니다. b()는 "dependsOnMethods"매개 변수를 사용하여 a()에 종속됩니다. 두 가지 테스트에 서로 다른 데이터 세트가 있습니다. 테스트를 실행할 때 데이터의 순서가 유지되도록하는 방법이 있습니까?dataprovider에서 데이터 순서를 유지하는 방법은 무엇입니까?

예 : 난 항상 구글, 애플, 마이크로 소프트, 야후 될 수있는 결과를 원하는

@DataProvider(name = "test1") 
public Object[][] createData1() { 
    return new Object[][] { 
     { "Google" }, 
     { "Microsoft"}, 
    }; 
} 

@DataProvider(name = "test2") 
public Object[][] createData2() { 
    return new Object[][] { 
     { "Apple"}, 
     { "Yahoo"}, 
    }; 
} 


@Test(dataProvider = "test1") 
public void verifyData1(String n1) { 
    System.out.println(n1); 
} 

@Test(dataProvider = "test2", dependsOnMethods="verifyData1") 
public void verifyData2(String n1) { 
    System.out.println(n1); 
} 

. 또는 Microsoft, Yahoo, Google, Apple

아니지만 Google, Yahoo, Microsoft, Apple 또는 Google, Microsoft, Apple, Yahoo.

이것은 test1이 dataprovder의 첫 번째 매개 변수 집합을 사용하여 실행되는 경우 test2가 dataprovider의 첫 번째 매개 변수 집합과 함께 실행되어야 함을 의미합니다. 첫 번째 집합을 실행하기 전에 두 번째 테스트가 dataprovider의 두 번째 매개 변수 집합과 함께 실행되는 한 test1의 dataprovider에있는 두 번째 매개 변수 집합이 첫 번째 집합 전에 실행되는지 여부는 중요하지 않습니다. 이것을 달성 할 수있는 방법이 있습니까?

이것은 group-by-instances 매개 변수를 사용하여 해결할 수 있음을 알게되었습니다. (이전 버전을 사용했기 때문에 내 testng xml에서 찾을 수없는 옵션). testNg를 업그레이드하고 업데이트를 게시하려고합니다.

+0

그룹 별 인스턴스 ,하지만 그것은 내 문제를 해결하지 못했습니다. – user3325862

답변

1

TestNG를 먼저 날짜 공급자로부터받은 모든 데이터에 대한 'verifyData1'메소드를 실행하고, 그 후 것은이 'verifyData2'를 실행하므로 출력 될 것입니다 : 구글, 마이크로 소프트, 애플, 야후

+0

기본 동작으로 이해합니다. 그것을 바꿀 수있는 방법이 있습니까? – user3325862

+0

올바른 내용은 doc : http://testng.org/doc/documentation-main.html에 나와 있습니다. –

0

http://testng.org/doc/documentation-main.html를 참조하십시오

종속 메서드는 클래스별로 그룹화됩니다. 메서드 b()가 메서드 a()에 의존하고 이러한 메서드가 포함 된 클래스의 인스턴스가 여러 개있는 경우 (데이터 공급자의 팩토리로 인해) 호출 순서는 다음과 같습니다. verifyData1("Google") verifyData1("Microsoft") verifyData2("Apple") verifyData2("Yahoo") TestNG는 b 모든 인스턴스가 자신의 a() 메소드를 호출 할 때까지.

당신이 원하는 경우 주문 : verifyData1("Google") verifyData2("Apple") verifyData1("Microsoft") verifyData2("Yahoo") 당신은 XML 속성을 사용하여 그룹별로 인스턴스를: 나는 6.8.8에 내 테스트-NG 버전을 업그레이드하고, 사용 <test name="Test1" group-by-instances="true">