在写单元测试时遇到一个问题:同一份代码,在单元测试时,我希望他连接到测试数据库;在正式运行时,我希望他连接到正式数据库。
因此,我要判断当前运行的是测试还是生产环境。
首先,我配置了两套数据库连接环境,一套用于单元测试,一套用于生产环境。
然后,通过运行时判断是否在运行单元测试,而决定读取哪一套的配置,判断代码为:
public class JUnitUtils {
private static Boolean isRunningTest = null;
/**
* 检测是否在运行单元测试
* @return
*/
public static Boolean IsRunningTest() {
if (null == isRunningTest) {
StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
List statckList = Arrays.asList(stackTrace);
for (Iterator i = statckList.iterator(); i.hasNext(); ) {
String stackString = i.next().toString();
if (stackString.lastIndexOf("junit.runners") > -1) {
isRunningTest = true;
return isRunningTest;
}
}
isRunningTest = false;
return isRunningTest;
} else {
return isRunningTest;
}
}
}