2017-10-20 12 views
0

을 통과 @dataprovider 나는이 @DataProviderTestNG를 여러 클래스 인스턴스

public class A { 

@BeforeTest 
    @DataProvider(name = "ProvideUsefulClasses") 
    public static Object[][] InitiateUsefulClasses() throws MalformedURLException { 


     PageObjectOne pageObjOne = new PageObjectOne(); 
     AndroidDriver driver=pageObjOne.driver; 
     TouchAction touchAction = new TouchAction(driver); 
     WebDriverWait wait = new WebDriverWait(driver, 20000); 

     return new Object[][] { 

      {touchAction, wait},{driver,pageObjOne} 


     } ; 
    } 
} 

같이 정의하고 난 다른 클래스

@Test(dataProvider = "ProvideUsefulClasses",dataProviderClass=A.class) 
class testMethods { 

    public static TouchAction tAction; 
    public static WebDriverWait Wait; 
    public static AndroidDriver Driver; 
    public static PageObjectOne PageObjectOneInst; 

    @Test(priority=1,dataProvider = "ProvideUsefulClasses",dataProviderClass=A.class) 

    public static void AgreeAllow(Object[][] UsefulClasses) throws InterruptedException{ 

     tAction = ((TouchAction) UsefulClasses[0][0]); 
     Wait= ((WebDriverWait) UsefulClasses[0][1]); 

     Driver = ((AndroidDriver) UsefulClasses[1][0]); 

     PageObjectOneInst = ((PageObjectOne) UsefulClasses[1][1]); 
     ... 
     ... 
} 

} 

이처럼 수신하고 그러나 나는 오류

을받을
FAILED: AgreeAllow 
org.testng.internal.reflect.MethodMatcherException: 
Data provider mismatch 
Method: AgreeAllow([Parameter{index=0, type=[[Ljava.lang.Object;, declaredAnnotations=[]}]) 
Arguments: [(io.appium.java_client.TouchAction)[email protected],(org.openqa.selenium.support.ui.WebDriverWait)[email protected]] 
    at org.testng.internal.reflect.DataProviderMethodMatcher.getConformingArguments 

오류 모양으로 보았을 때 제대로 데이터를 수신하거나 반송하지 못하고있는 것 같습니다. 모자가 여기 없습니까?

이 방법으로 수행 할 수없는 경우에만 @factory을 사용하고 싶습니다. @factory을 사용하여 해결하지 않았으므로 검색해야 할 것입니다.

추가 : 나는 단지 this이지만 그 중 하나만 전달합니다. 여러 과목을 위해 어떻게해야합니까?

답변

0

내가 @dataprovider 방법

return new Object[][] { 

      { touchAction, wait,driver,pageObjOne} 

     } ; 

을 나는 또한

public static void AgreeAllow(TouchAction t,WebDriverWait w,AndroidDriver d,PageObjectOne p) throws InterruptedException{ 

... 
... 

} 
으로 수신 방법의 정의를 변경 아래에 return 문을 변경하는 경우 그 오류가 사라 졌어요