このホワイト ペーパーで説明されているようにテスト ケースをランダムに選択してマスター テスト スイートから小さなテスト スイートを作成し、さまざまなサイズのテスト スイートに対してピットを使用してミューテーション テストを実行することにより、カバレッジとテスト スイートの有効性の関係を確認したかったのです。. 私が使用している SUT は joda-time です。マスタースイートから小さなテストスイートを作成するために、次のプログラムを作成しました
public class CustomTestAll extends TestCase {
public static Test suite() {
List<Test> inter_list;
List<Test> templist=new ArrayList<Test>();
TestSuite j=null;
Enumeration<Test> e;
TestSuite suite = new TestSuite();
//// TestHours
j= (TestSuite)TestHours.suite();
e=j.tests();
inter_list= Collections.list(e);
////TestDateTimeFieldType
j= (TestSuite)TestDateTimeFieldType.suite();
e=j.tests();
templist = Collections.list(e);
inter_list.addAll(templist);
////so on for all classes
///generating 10 unique random numbers between 0 and number of testcases
List<Integer> list = new ArrayList<Integer>();
for (int i=0; i<inter_list.size(); i++) {
list.add(new Integer(i));
}
Collections.shuffle(list);
for (int i = 0; i < 10;i++){
suite.addTest(inter_list.get(list.get(i)));
}
Enumeration<Test> k=suite.tests();
while(k.hasMoreElements()){System.out.println(k.nextElement());}
return suite;
}}
これは、junit と emma のコード カバレッジで正常に動作しています。ただし、このテスト スイートを使用してミューテーション テスト (ptest) を実行すると、選択した 1 つではなく、クラス内のすべてのテスト ケースが取得されます。何が悪いのかわかりません。私はJavaの初心者で、Eclipseを使用しています。