/**
* @author jsczxy2
*/
public class TestCaseThread implements Runnable, Serializable {
/**
*
*/
private static final long serialVersionUID = -5528958657359499860L;
Log log = LogFactory.getLog(getClass());
private String className;
public TestCaseThread(String className) {
this.className = className;
}
@SuppressWarnings("unchecked")
public void run() {
try {
Class c = Class.forName(className);
Method method = c.getMethod("main", String[].class);
SysDwr.testFlag.setCheck(false);
method.invoke(null, (Object) new String[] {});
SysDwr.testFlag.setCheck(true);
} catch (Exception e) {
SysDwr.testFlag.setCheck(true);
SysDwr.testFlag.setErrorMsg(handleException(e));
}
}
private String handleException(Exception e) {
String msg = null;
if (e instanceof InvocationTargetException) {
Throwable targetEx = ((InvocationTargetException) e)
.getTargetException();
if (targetEx != null) {
msg = targetEx.getMessage();
}
} else {
msg = e.getMessage();
}
return msg;
}
}
handleException方法用来捕捉反射调用类报出的错误,与一般直接取方法的错误是不一样的,反射类调用方法中抛出的Exception会以InvocationTargetException抛出到上层业务中,必须单独处理。