我想检查覆盖率和测试套件有效性之间的关系,方法是通过随机选择本文中描述的测试用例从主测试套件中创建一个小型测试套件,并使用pit针对各种大小的测试套件运行突变测试. 我使用的 SUT 是 joda-time。我编写了以下程序来从 master-suite 创建一个小型测试套件
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 代码覆盖率下运行良好。但是,当我使用这个测试套件运行突变测试(pitest)时,它会采用一个类中的所有测试用例,而不是一个选定的测试用例。我无法弄清楚出了什么问题。我是java初学者,我正在使用eclipse。