栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

使用单个测试方法使用多个DataProvider的TestNG

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用单个测试方法使用多个DataProvider的TestNG

由于缺乏更好的方法,我决定坚持解决方法。这是如何实现上述方案的示例:

@Testpublic class ExampleDataProvider {       @DataProvider(name = "ShapeCodes")    public static Object[][] getShapeCodes() {        return new Object[][] { new Object[] { Shape.Square },  new Object[] { Shape.Triangle }        };    }        @DataProvider(name = "ColorCodes")    public static Object[][] geColorCodes() {        return new Object[][] { new Object[] { Color.Green },  new Object[] { Color.Red }        };    }        @DataProvider(name = "objectCodes")    public static Object[][] getObjectCodes(){        return combine(geColorCodes(),  getShapeCodes());    }        public static Object[][] combine(Object[][] a1, Object[][] a2){        List<Object[]> objectCodesList = new linkedList<Object[]>();        for(Object[] o : a1){ for(Object[] o2 : a2){     objectCodesList.add(concatAll(o, o2)); }        }         return objectCodesList.toArray(new Object[0][0]);    }    @SafeVarargs    public static <T> T[] concatAll(T[] first, T[]... rest) {     //calculate the total length of the final object array after the concat          int totalLength = first.length;      for (T[] array : rest) {        totalLength += array.length;      }      //copy the first array to result array and then copy each array completely to result      T[] result = Arrays.copyOf(first, totalLength);      int offset = first.length;      for (T[] array : rest) {        System.arraycopy(array, 0, result, offset, array.length);        offset += array.length;      }      return result;    }}

这样,我就可以分别使用我的颜色代码和形状代码,并且还可以组合使用。

因此,我的测试方法如下所示:

@Test(dataProvider = "objectCodes", dataProviderClass = ExampleDataProvider.class)     public void test(String ShapeCode, String ColorCode) throws IOException {..........................          }@Test(dataProvider = "ShapeCodes", dataProviderClass = ExampleDataProvider.class)    public void test(String ShapeCode) throws IOException {        .............                .............    }@Test(dataProvider = "ColorCodes", dataProviderClass = ExampleDataProvider.class)    public void test(String ColorCode) throws IOException {        .............                .............    }


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/617180.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号