我有這個問題:我需要在字符串中打印重複的字符。 現在,如果你看我的代碼,沒有在循環結束時返回,我會得到正確的算法。但是如果我把char作爲返回值,第二個循環會在結束之前熄滅。是否有必要在使用Junit TDD的方法中返回?
是否有必要在要測試的程序中獲得回報?
這是代碼:
int[] letters = new int[26];
for (int i = 0; i < s.length(); i++) {
letters[s.charAt(i) - 97]++;
}
for (int i = 0; i < letters.length; i++) {
if (letters[i] > 1) {
char c = (char) (i + 97);
System.out.println(c);
//return c;
}
}
在那裏添加返回會讓你的方法做錯誤的事情。因此,測試將會中斷。 – SLaks
爲了正確的可測試性,您應該將邏輯(需要測試的)與不可測試的副作用(打印)分開。 – SLaks
您可以將char添加到數組並在最後返回數組。它會保持方法的可測性,並且可以打印出可以得到相同結果的數組。 –