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();
}