[英]Forcing private method return value in test JUnit
我正在嘗試測試一個公共方法,該方法調用一個私有方法,該方法返回一個隨機整數以在公共方法中使用。
我發現很難編寫測試,因為由於隨機數生成器,我的預期輸出點總是與我的結果不同。 所以我試圖讓私有方法在調用時返回一個指定的值(在測試中)。
這可能嗎?
方法:
public String addLine(String arrayString){
String[] numbers = arrayString.split(",");
int startingSize = numbers.length;
int newLineCounter = generateLineSpacing(startingSize);
for (int index =0;index <numbers.length; index++ ,newLineCounter--){
if (newLineCounter == 0){
numbers[index] = "\n," + numbers[index];
newLineCounter = generateLineSpacing(startingSize);
}
}
return StringUtils.arrayToCommaDelimitedString(numbers);
}
private int generateLineSpacing(int sizeOfArray) {
Random random = new Random();
//odd +1
if (sizeOfArray % 2 == 1){
sizeOfArray += 1;
}
//create new line in random position within range 1 - half array size
return random.nextInt(sizeOfArray/2 -1 ) + 1;
}
測試:
@Test
public void shouldAddSymbolAtNewLineLocation(){
//given
String expected = "2,3,\n,4";
String startingString = "2,3,4";
//mock out random number generator to return 2
//when
String result = underTest.addLine(startingString);
//then
assertEquals(expected, result);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.