2009-03-31 2 views
11

DataProvider을 사용하여 테스트하는 방법이 있다면 누구나 알고 있습니까? @ 주석을 사용하는 것과 동시에 테스트 할 수 있습니까? 우리의 테스트 스위트에는 @Parameter 주석을 통해 테스트 메소드에 전달되는 일정한 구성 정보가 있습니다. 이제 DataProvider를 사용하여 일련의 데이터 값에 대해 이러한 테스트를 실행하려고합니다.TestNG DataProvider 및 테스트 스위트 매개 변수를 사용할 수 있습니까?

나는 결과 매개 변수의 순서를 결정하는 내부 문제를 알고 있지만 가능한 경우이 기능이 필요합니다.

의견이 있으십니까? 이상적인 세계에서는

, 나는 이런 식으로 뭔가를 할 수 :

@Test(dataprovider = "dataLoader") 
@Parameters("suiteParam") 
public void testMethod(String suiteParam, String fromDataParam) { 
... 
} 

답변

8

이 봐, 그것은 조금 투박 할 수 있지만, 당신은 @BeforeClass 방법을 사용하지 않는 이유 필드에 로컬 suiteParam를 저장하기 위해 테스트 클래스의.

private String suiteParam; 

@BeforeClass 
@Parameter("suiteParam") 
public void init(String suiteParam) { 
    this.suiteParam = suiteParam; 
} 

이렇게하면 일반적인 방식으로 데이터 제공 업체를 사용할 수 있으며 여전히 스위트 매개 변수에 액세스 할 수 있습니다.

2

예, 사용은 TestNG's dependency injection capabilies입니다. DataProvider의 모든 정의 된 매개 변수에 액세스 할 수 있습니다. 사용자가 구성한 후 테스트에 사용되는 dataProvider 내의 매개 변수를 생성 수집 할 수 있습니다

@DataProvider(name = "usesParameter") 
public Object[][] provideTestParam(ITestContext context) { 
    String testParam = context.getCurrentXmlTest().getParameter("test_param"); 
    return new Object[][] {{ testParam }}; 
} 

이 방법 :이 test_param 매개 변수를 필요로하는 일부 예제 DataProvider를합니다. ITestContext 클래스에 대한 자세한 내용은 TestNG JavaDoc을 참조하십시오.

관련 문제