参数化测试 junit_JUnit中的参数化测试运行器
生活随笔
收集整理的這篇文章主要介紹了
参数化测试 junit_JUnit中的参数化测试运行器
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
參數化測試 junit
我們都有書面的單元測試,其中在一個測試中針對不同的可能的輸入輸出組合進行測試。 讓我們以一個簡單的斐波那契數列示例為例,看看它是如何完成的。
以下代碼針對提到的元素數量計算斐波那契數列:
讓我們看看使用多個輸入值測試上述代碼的常規方法
import java.util.List; import org.junit.Test; import java.util.Arrays; import static org.junit.Assert.*;public class FibonacciCachedTest {/*** Test of getFiboSeries method, of class Fibonacci.*/@Testpublic void testGetFiboSeries() {System.out.println("getFiboSeries");int numberOfElements = 5;Fibonacci instance = new Fibonacci();List<Integer> expResult = Arrays.asList(1, 1, 2, 3, 5);List<Integer> result = instance.getFiboSeries(numberOfElements);assertEquals(expResult, result);numberOfElements = 10;expResult = Arrays.asList(1, 1, 2, 3, 5, 8, 13, 21, 34, 55);result = instance.getFiboSeries(numberOfElements);assertEquals(expResult, result);} }因此,我們已經能夠測試2個輸入,想象將以上內容擴展為更多的輸入嗎? 測試代碼中不必要的膨脹。
JUnit提供了另一個名為Parameterized Runner的Runner,它公開了一個帶有@Parameters注釋的靜態方法。 必須實現此方法以返回輸入和預期的輸出集合,這些集合將用于運行類中定義的測試。 讓我們看一下執行此操作的代碼:
import java.util.Arrays; import java.util.Collection; import java.util.List; import static org.junit.Assert.assertEquals; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized;@RunWith(Parameterized.class) public class ParametrizedFiboTest {private final int number;private final List<Integer> values;public ParametrizedFiboTest(FiboInput input) {this.number = input.number;this.values = input.values;}@Parameterized.Parameterspublic static Collection<Object[]> fiboData() {return Arrays.asList(new Object[][]{{new FiboInput(1, Arrays.asList(1))},{new FiboInput(2, Arrays.asList(1, 1))},{new FiboInput(3, Arrays.asList(1, 1, 2))},{new FiboInput(4, Arrays.asList(1, 1, 2, 3))},{new FiboInput(5, Arrays.asList(1, 1, 2, 3, 5))},{new FiboInput(6, Arrays.asList(1, 1, 2, 3, 5, 8))}});}@Testpublic void testGetFiboSeries() {FibonacciUncached instance = new FibonacciUncached();List<Integer> result = instance.getFiboSeries(this.number);assertEquals(this.values, result);}}class FiboInput {public int number;public List<Integer> values;public FiboInput(int number, List<Integer> values) {this.number = number;this.values = values;} }這樣,我們只需要在fiboData()方法中添加一個新的輸入和預期的輸出就可以了!
翻譯自: https://www.javacodegeeks.com/2014/08/parameterized-test-runner-in-junit.html
參數化測試 junit
總結
以上是生活随笔為你收集整理的参数化测试 junit_JUnit中的参数化测试运行器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Quarkus入门
- 下一篇: 魔术贴不粘了小窍门 魔术贴不粘如何解决