在jfinal开发中不能直接使用junit单元测试,所以写了以下工具。 原理是在运行junit测试 方法之前启动jfinal的插件,运行完成后关闭插件。
import org.junit.After;
import org.junit.Before;
import com.jfinal.config.Constants;
import com.jfinal.config.JFinalConfig;
import com.jfinal.config.Plugins;
import com.jfinal.plugin.IPlugin;
/**
* jfinal单元测试
*
* [@author](https://my.oschina.net/arthor) roseboy
*
*/
public class JunitFinalTest {
private Constants constants;
private Plugins plugins;
/**
* 通过配置类启动jfinal插件等
*/
@Before
public void initConfig() {
try {
String configClass = "net.roseboy.project.common.Config";
Class<?> clazz = Class.forName(configClass);
JFinalConfig jfinalConfig = (JFinalConfig) clazz.newInstance();
constants = new Constants();
jfinalConfig.configConstant(constants);
plugins = new Plugins();
jfinalConfig.configPlugin(plugins);
for (IPlugin plug : plugins.getPluginList()) {
plug.start();
}
jfinalConfig.afterJFinalStart();
System.out.println("\n==JunitFinalTest Start==================\n");
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 停止jfinal插件
*/
@After
public void endConfig() {
System.out.println("\n==JunitFinalTest End====================");
if (plugins != null) {
for (IPlugin plug : plugins.getPluginList()) {
plug.stop();
}
}
}
}
在使用的时候,测试类需要继承上边的JunitFinalTest 类 使用示例:
public class TestDoctor extends JunitFinalTest {
@Test
public void testMethod() {
Doctor d = Doctor.dao.findById("expert_000003");
System.out.println(d);
}
}