JUnitでテストする場合、初心者です。for-loops/Loopsのテスト方法はわかりません。私のコードでは、私がテストしなければならないfor-loopsのいくつかを見ることができます。私は主にtop5のリストメソッドとprintListOfResultsをテストしたいと思っています。どうすれば私のfor-loopsとarraylistをJavaのJUnitでテストするのですか
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
/**
* Write a description of class Discipline here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class Discipline
{
private String disciplineName;
private HashMap <EliteSwimmer, Result> eliteResults;
/**
* Constructor for objects of class Discipline.
* @param disciplineName The discipline name.
*/
public Discipline(String disciplineName)
{
this.disciplineName = disciplineName;
eliteResults = new HashMap<EliteSwimmer, Result>() ;
}
/**
* Get the value of disciplineName.
* @return the value of disciplineName.
*/
public String getDisciplineName()
{
return disciplineName;
}
/**
* Add the elite swimmer's best training result.
* @param elite The elite member.
* @param res The elite member's best training result.
*/
public void addEliteResults(EliteSwimmer elite, Result res)
{
if (res.getType() == 0) {
eliteResults.put(elite, res);
}
else {
System.out.println("Not a training result");
}
}
/**
* Print a list with the elite swimmers' best training results.
*/
public void printListofResults()
{
Set set = eliteResults.entrySet();
Iterator iterator = set.iterator();
while(iterator.hasNext()) {
Map.Entry mentry = (Map.Entry)iterator.next();
System.out.println("Elite Swimmer: "+ ((EliteSwimmer)mentry.getKey()).getName());
System.out.println("Result: " + ((Result) mentry.getValue()).getTime());
}
}
/**
* Print a list with the top 5 elite swimmers, based on their training results.
*/
public void Top5List()
{
Set<Entry<EliteSwimmer,Result>> set = eliteResults.entrySet();
List<Entry<EliteSwimmer,Result>> list = new ArrayList<Entry<EliteSwimmer,Result>>(set);
Collections.sort(list, new Comparator<Map.Entry<EliteSwimmer,Result>>()
{
@Override
public int compare(Map.Entry<EliteSwimmer,Result> o1, Map.Entry<EliteSwimmer,Result> o2)
{ return Double.compare(o1.getValue().getTime(), o2.getValue().getTime()); }
});
LinkedHashMap<EliteSwimmer,Result> sortedHashMap=new LinkedHashMap<EliteSwimmer,Result>();
for (Map.Entry<EliteSwimmer,Result> entry: list) {
sortedHashMap.put(entry.getKey(), entry.getValue());
}
int counter = 0;
for(Map.Entry<EliteSwimmer,Result> entry: list)
{counter ++;
System.out.println("Elite swimmer: " + entry.getKey().getName()+" Result: " +entry.getValue().getTime());
if (counter == 5)
break;
}
}
}
私が 'printListofResults'メソッドをテストしようとすると、' println'呼び出しを 'Print'メソッドで' PrintString'クラスにリファクタリングして、その文字列を引数として取ります。次に、テストでは、私は 'PrintString'クラスを模擬し、スパイを使用してメソッドがセット内の各要素に対して1回呼び出されたことを確認します。 –