p-unit最新介绍已在 developerWorks 发表,请点击 这里 查阅

我们已经看到了p-unit如何支持多线程,以及参数化测试案例, 今天介绍的是一个p-unit的高级功能,测试同一个测试案例在不同虚拟机上的性能。你能想像的最小工作量是什么?对,写测试案例,配置虚拟机参数。p-unit也是这么要求开发者的,需要开发者指定虚拟机的java可执行程序路径以及classpath,然后调用runner.runVMs(Class clazz)即可。 下面是实例代码:
public static void main(String[] args) {
    SoloRunner runner = new SoloRunner();
    runner.addPUnitEventListener(new OverviewReporter(new ImageRender()));
    runner.runVMs(ListTestClass.class, new VM[] { VMConfig.HARMONY, VMConfig.SUN });
}

public class VMConfig {
    private static String CLASSPATH = " -cp correct_classpath_including_all_jars_and_path"; //$NON-NLS-1$
    private static String HARMONY_PATH = "harmony_path//bin//java" + CLASSPATH; //$NON-NLS-1$
    private static String SUN_PATH = "sun_path//bin//java" + CLASSPATH; //$NON-NLS-1$
    public static VM HARMONY = new VM(HARMONY_PATH, "HARMONY"); //$NON-NLS-1$
    public static VM SUN = new VM(SUN_PATH, "SUN"); //$NON-NLS-1$
}

public class ListTestClass {
   
    private static final int LIST_COUNT = 100000;
    private static Object element = new Object();
    private Random indexGenerator = new Random();;
       
    public void testInsertArrayList() {       
        ArrayList arrayList = new ArrayList(LIST_COUNT);
        insertSequence(arrayList);
        insertRandom(arrayList);
    }
   
    public void testInsertVector() {
        Vector vector = new Vector(LIST_COUNT);
        insertSequence(vector);
        insertRandom(vector);
    }
   
    public void insertSequence(List list) {
        for (int i = 0; i < LIST_COUNT; ++i) {
            list.add(element);
        }
    }
   
    public void insertRandom(List list) {
        for (int i = 0; i < LIST_COUNT; ++i) {
            list.add(indexGenerator .nextInt(LIST_COUNT),element);
        }
    }

}

运行结果为两张pp的报表:

欲知如何产生报表 -- 且听下回分解(或更可能的是你已经知道了 )
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐