有如下描述一個很好的可能性,運行與其中不同的數據多次執行同樣的測試方法參數JUnit測試:http://junit.org/apidocs/org/junit/runners/Parameterized.html使用非原始參數進行參數化的JUnit測試?
不幸的是,它似乎只可以使用原始的參數或字符串,但不是對象。有沒有已知的解決方法?
有如下描述一個很好的可能性,運行與其中不同的數據多次執行同樣的測試方法參數JUnit測試:http://junit.org/apidocs/org/junit/runners/Parameterized.html使用非原始參數進行參數化的JUnit測試?
不幸的是,它似乎只可以使用原始的參數或字符串,但不是對象。有沒有已知的解決方法?
使用@Parameters註釋的data()
方法的類型是List<Object[]>
,因此您可以放入任何對象。
要通過在,例如,一個Money
對象,您的陣列被轉換爲一個列表將是:
{{新錢(26, 「CHF」)}, {新錢(12 ,「USD」)}}
測試類的構造函數應該接受一個Money對象作爲參數。
最近我開始zohhak項目。它可以讓你寫:
@TestWith({
"25 USD, 7",
"38 GBP, 2",
"null, 0"
})
public void testMethod(Money money, int anotherParameter) {
...
}
使用對象也可以使用Junit @Parameters
。
例子: -
@RunWith(Parameterized.class)
public class TestParameter {
@Parameter(value=0)
public int expected;
@Parameter(value=1)
public int first;
@Parameter(value=2)
public int second;
private Calculator myCalculator;
@Parameters(name = "Test : {index} : add({1}+{2})= Expecting {0}")//name will be shared among all tests
public static Collection addNumbers() {
return Arrays.asList(new Integer[][] { { 3, 2, 1 }, { 5, 2, 3 }, { 9, 8, 1 }, { 200, 50, 150 } });
}
@Test
public void testAddWithParameters() {
myCalculator = new Calculator();
System.out.println(first + " & " + second + " Expected = " + expected);
assertEquals(expected, myCalculator.Add(first, second));
}
}
你搞清楚這個問題的任何解決方案? – 2017-10-25 15:04:03