0

このホワイト ペーパーで説明されているようにテスト ケースをランダムに選択してマスター テスト スイートから小さなテスト スイートを作成し、さまざまなサイズのテスト スイートに対してピットを使用してミューテーション テストを実行することにより、カバレッジとテスト スイートの有効性の関係を確認したかったのです。. 私が使用している 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を使用しています。

4

0 に答える 0