0

パラメータを @test に渡して、異なるデータで複数回実行したいと考えています。だから私は2次元オブジェクト配列を返す@DataProviderを使用しています。私は1次元の文字列を持っているので、最初にそれを2次元配列に変換してから、オブジェクトに値を割り当てています。. しかし、次の例外が発生します。

public class DtaProvider {

    public static String patchfileName = null;
    public static String[] patchsplit = null;
    public static String temp= null;
    public int number   = 0;

      @DataProvider(name = "getData")
      public Object[][] createData() {

          patchfileName = "hi,how,are,you";
          patchsplit = patchfileName.split(",");

          Object[] arr = patchsplit ;

          System.out.println(arr.length);

          for(int i=0;i<arr.length;i++){
              System.out.println(arr[i].toString());
          }
          Object[][] data = new Object[arr.length][arr.length];

          for (int x = 0; x < arr.length; x++){
              data[x][x] = arr[x];

            }

          return data;

      } 



        @Test(dataProvider="getData")

        public void DownloadPatch(String patchfileNamea ){

            try{

            System.out.println("Name is b"+patchfileNamea);
            }
            catch (Exception e){
                org.testng.Assert.fail("Failed to Download Patch to NgDriver " + e.getMessage());

            } 
        }
}


TestNG] Running:
  C:\Users\Mohan Raj S\AppData\Local\Temp\testng-eclipse-1472908796\testng-customsuite.xml

4
hi
how
are
you
FAILED: DownloadPatch
org.testng.TestNGException: 
The data provider is trying to pass 4 parameters but the method testclasses.DtaProvider#DownloadPatch takes 1
    at org.testng.internal.Invoker.injectParameters(Invoker.java:1257)

パラメータを @test メソッドに順番に渡す方法を教えてください。

4

2 に答える 2

2

@DataProvider が 4 つのパラメーターを返すのに対し、@Test メソッドは 1 つのパラメーターのみを受け取ることがエラー ログに明確に記載されています。

@DataProvider が返すパラメータの数を @Test メソッドに渡すのは非常に簡単です。@Test メソッドは次のようになります。

@Test(dataProvider="getData")
public void DownloadPatch(String param1, String param2, String param3, String param4){
   System.out.println(param1);
}

更新:1

@Test メソッドで 1 つのパラメーターのみを渡す何らかの理由がある場合でも、この方法で @DataProvider を変更する必要があります。

public Object[][] createData() {
    patchfileName = "hi,how,are,you";
    patchsplit = patchfileName.split(",");
    Object[][] data = new Object[patchsplit.length][1];
    for (int x = 0; x < patchsplit.length; x++) {
        data[x][0] = patchsplit[x];

    }
    return data;
}
于 2015-10-19T05:31:46.363 に答える