0
我在本@DataProvider
定義如下TestNG的@dataProvider傳遞多個類的實例
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
看來,從錯誤的角度看,我沒有正確接收或返回數據,w帽子在這裏失蹤?
只有在不能以這種方式完成的情況下,我纔想使用@factory
。 我還沒試過用@factory
來解決它,我得搜索一下。
ADDITION:我發現this,但它只通過一個類。我們如何爲多個課程做到這一點?