浅谈Junit4和TestNG中的参数化测试
生活随笔
收集整理的這篇文章主要介紹了
浅谈Junit4和TestNG中的参数化测试
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
最近在看Junit4的相關知識,由于本身做的是自動化方面的測試,所以工作上著重于應用TestNG。恰好遇到了一個將case進行參數化的需求,故在此記錄Junit4和TestNG在參數化方面的區別。
一、Junit4和TestNG的注釋支持
?
| 測試注釋 | @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中的参数化测试的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mpvue 从零开始 女友的衣装 1 p
- 下一篇: 摘要:HenCoder Android