testng和junit有啥优缺点,该怎样选择( 三 )


public class TestNGTest6_1_0 {@Test@Parameters(value="https://www.zhihu.com/api/v4/questions/26026007/number")public void parameterIntTest(int number) { System.out.println("Parameterized Number is : " + number); }}Java
XML文件的内容如下 –
\u0026lt;suite name="My test suite"\u0026gt; \u0026lt;test name="testing"\u0026gt; \u0026lt;parameter name="number" value="https://www.zhihu.com/api/v4/questions/26026007/2"/\u0026gt; \u0026lt;classes\u0026gt; \u0026lt;class name="com.fsecure.demo.testng.TestNGTest6_0" /\u0026gt; \u0026lt;/classes\u0026gt; \u0026lt;/test\u0026gt;\u0026lt;/suite\u0026gt;XML
@DataProvider用于参数化测试
将数据值拉入XML文件可能非常方便,但测试偶尔会需要复杂的类型,这些类型不能被表示为一个字符串或一个原始类型值。 TestNG使用@DataProvider注解来处理这种情况,这有助于将复杂参数类型映射到测试方法。
@DataProvider for Vector,String或Integer作为参数,参考如下代码 –
@Test(dataProvider = "Data-Provider-Function") public void parameterIntTest(Class clzz, String number) { System.out.println("Parameterized Number is : " + number); System.out.println("Parameterized Number is : " + number); } //This function will provide the patameter data @DataProvider(name = "Data-Provider-Function") public Object parameterIntTestProvider() { return new Object{ {Vector.class, new String {"java.util.AbstractList","java.util.AbstractCollection"}}, {String.class, new String {"1", "2"}}, {Integer.class, new String {"1", "2"}} }; }Java
@DataProvider作为对象的参数
“TestNGTest6_3_0”是一个简单的对象,只需使用get/set方法进行演示。
@Test(dataProvider = "Data-Provider-Function")public void parameterIntTest(TestNGTest6_3_0 clzz) { System.out.println("Parameterized Number is : " + clzz.getMsg()); System.out.println("Parameterized Number is : " + clzz.getNumber());}//This function will provide the patameter data@DataProvider(name = "Data-Provider-Function")public Object parameterIntTestProvider() { TestNGTest6_3_0 obj = new TestNGTest6_3_0(); obj.setMsg("Hello"); obj.setNumber(123); return new Object{ {obj} };}Java
TestNG的参数化测试非常用户友好和灵活(在XML文件或类内)。 它可以支持许多复杂的数据类型作为参数值,可能性是无限的。 如上例所示,我们甚至可以传入我们自己的对象(TestNGTest6_3_0)进行参数化测试
7.依赖性测试 【testng和junit有啥优缺点,该怎样选择】 “参数化测试”表示方法是依赖性测试,它将在所需方法之前执行。 如果依赖方法失败,则所有后续测试将会被跳过,不会被标记为失败。
JUnit 4
JUnit框架着重于测试隔离; 目前它不支持此功能。
TestNG
它使用“dependOnMethods”来实现依赖测试如下 –
@Testpublic void method1() { System.out.println("This is method 1");}@Test(dependsOnMethods={"method1"})public void method2() { System.out.println("This is method 2");}


推荐阅读