Java - 自製測試抽象類別

Java - 自製測試抽象類別

這不是UnitTest,這是我想發現哪個環節的速度導致整體速度慢的測試,所以才會有記錄start_time,end_time及計算spend_time

init 是為了,不要將前置作業也算入時間,所以前置作業的部分請在init撰寫

start為實際測試的流程。最後會列表這次測試所花費的時間。

只要你有繼承AbsTest,並實作了 init()、start()

使用方法則是AbsTest.startTest(ObjectTest.class)

ObjectTest是我繼承AbsTest並實作其方法的類別。


import java.util.Date;

public abstract class AbsTest{
	public long start_time;
	public long end_time;
	
	public static void startTest(Class c){
		AbsTest.getInstance(c).test();
	}
		
	public static AbsTest getInstance(Class c){
		try {
			return  (AbsTest)c.newInstance();
		} catch (InstantiationException | IllegalAccessException e) {
			e.printStackTrace();
		}
		
		return new AbsTest(){
			@Override
			public void init() {				
			}

			@Override
			public void start() {				
			}};
	}
	
	public void test(){
		init();
		start_time = (new Date()).getTime();
		start();
		end_time = (new Date()).getTime();
		long spend_time = end_time - start_time;
		System.out.println("test "+getClassName() + ",spend time = " + spend_time);
	}
	
	public String getClassName(){
		String class_name = "";
		Class<?> enclosingClass = getClass().getEnclosingClass();
		if (enclosingClass != null) {
		   class_name = enclosingClass.getName();
		} else {
		   class_name = getClass().getName();
		}
		return class_name;
	}
	
	public abstract void init();
	public abstract void start();
}