日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

浅谈Junit4和TestNG中的参数化测试

發布時間:2023/12/10 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 浅谈Junit4和TestNG中的参数化测试 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近在看Junit4的相關知識,由于本身做的是自動化方面的測試,所以工作上著重于應用TestNG。恰好遇到了一個將case進行參數化的需求,故在此記錄Junit4和TestNG在參數化方面的區別。

一、Junit4和TestNG的注釋支持

?

特點JUnit 4TestNG
測試注釋@Test@Test
在套件中的所有測試運行之前運行-@BeforeSuite
在套件中的所有測試運行之后運行-@AfterSuite
測試之前運行-@BeforeTest
測試之后運行-@AfterTest
在調用屬于任何這些組的第一個測試方法之前運行-@BeforeGroups
在調用屬于任何這些組的第一個測試方法之后運行-@AfterGroups
在調用當前類的第一個測試方法之前運行@BeforeClass@BeforeClass
在調用當前類的第一個測試方法之后運行@AfterClass@AfterClass
在每個測試方法之前運行@Before@BeforeMethod
在每個測試方法之后運行@After@AfterMethod
忽略測試@ignore@Test(enbale=false)
預期的異常@Test(expected = ArithmeticException.class)@Test(expectedExceptions = ArithmeticException.class)
超時測試@Test(timeout = 1000)@Test(timeout = 1000)

?

二、Junit4和TestNG的參數化支持

?

下面我們來針對最簡單的計算器加法類進行測試。

Calculator.class

package jqi.testng.methods;/*** Just create a tiny class Calculator*/ public class Calculator {public Calculator(){}public int add(int firstNumber, int secondNumber){return firstNumber + secondNumber;}public static void main( String[] args ){System.out.println( "Hello World!" );} }

?

Junit4 中的實現

?

1 package jqi.testng.testcases; 2 3 import java.util.Arrays; 4 import java.util.Collection; 5 6 import org.junit.BeforeClass; 7 import org.junit.Test; 8 import org.junit.runner.RunWith; 9 import org.junit.runners.Parameterized; 10 import org.junit.runners.Parameterized.Parameters; 11 import org.junit.Assert; 12 13 import jqi.testng.methods.Calculator; 14 15 @RunWith(Parameterized.class) 16 public class CalculatorJunit4Test { 17 18 private int firstNumber; 19 private int secondNumber; 20 private int sum; 21 public static Calculator calculator; 22 23 public CalculatorJunit4Test(int firstNumber, int secondNumber, int sum){ 24 super(); 25 this.firstNumber = firstNumber; 26 this.secondNumber = secondNumber; 27 this.sum = sum; 28 } 29 30 @BeforeClass 31 public static void setUp(){ 32 calculator = new Calculator(); 33 } 34 35 /** 36 * 這里的返回的應該是一個可迭代數組,且方法必須是public static 37 * @return 38 */ 39 @Parameters 40 public static Collection<Object[]> getParams(){ 41 42 Object[][] data = new Object[][] {{12,9,21},{45,44,89},{18,9,27}}; 43 return Arrays.asList(data); 44 } 45 46 @Test 47 public void a_addTest() { 48 Assert.assertTrue(calculator.add(firstNumber, secondNumber) == sum); 49 } 50 } Junit4 test case

?

?

?

junit4對于參數化的支持有很多限制,必須將參數傳遞給初始化函數后才能夠應用,而且參數的返回類型必須是 "List [ ]",因此數據已被限制為String或用于測試的原始類型值

TestNG 中的實現

?

package jqi.testng.testcases;import org.testng.Assert; import org.testng.annotations.BeforeTest; import org.testng.annotations.DataProvider; import org.testng.annotations.Test;import jqi.testng.methods.Calculator;/*** Unit test for Calculator.*/ public class CalculatorTestNGTest {public Calculator calculator;@BeforeTestpublic void setUp(){calculator = new Calculator();}/*** @return {{firstNumber, secondNumber, sum}, ...}* */@DataProvider(name="calculatorDataProvider")public Object[][] getData() {return new Object[][]{{12,9,21},{45,44,89},{18,9,27}};}@Test(dataProvider="calculatorDataProvider")public void a_addTest(int firstNumber, int secondNumber, int sum){Assert.assertTrue(calculator.add(firstNumber, secondNumber) == sum);} } TestNG test case

?

?

?

TestNG存在兩種參數化方式,其中一種是利用XML的配置文件,這里略過這種方式,可以看到,TestNG的參數化測試非常用戶友好和靈活(在XML文件或類內)。 它可以支持許多復雜的數據類型作為參數值

轉載于:https://www.cnblogs.com/Seven13G/p/7762226.html

總結

以上是生活随笔為你收集整理的浅谈Junit4和TestNG中的参数化测试的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。