后台模拟测试
现行web开发使用mvc分层模式下往往页面,与底层分开来进行开发,那么如何在没有页面的情况下进行测试哪?
首先要明确一点 Spring框架下的类属性的初始化,是在程序加载.xml文件中进行的。
public class RunInfoModuleHandle {
private static Log log = LogFactory.getLog(RunInfoModuleHandle.class);
private BiztxlogDAO biztxlogDAO;
private DailyInfoListDAO dailyInfoListDAO;
private ReportRemedyDAO reportRemedyDAO;
private PosBiztxlogDAO posBiztxlogDAO;
private PosBizDailyDAO PosBizDailyDAO;
private PosReportRemedyDAO
public ReportRemedyDAO getReportRemedyDAO() {
return reportRemedyDAO;
}
public void setReportRemedyDAO(ReportRemedyDAO reportRemedyDAO) {
this.reportRemedyDAO = reportRemedyDAO;
}
新建一个对象,一般 ReportRemedyDAO reportRemedyDAO = new ReportRemedyDAO();
不过在spring框架下,根据配置文件
<bean id="runInfoModuleHandle"
class="com.zjft.xconsole.common.tcp.RunInfoModuleHandle">
<property name="biztxlogDAO" ref="BiztxlogDAO"></property>
<property name="dailyInfoListDAO" ref="DailyInfoListDAO"></property>
<property name="reportRemedyDAO" ref="ReportRemedyDAO"></property>
<property name="posBiztxlogDAO" ref="PosBiztxlogDAO"></property>
<property name="posBizDailyDAO" ref="PosBizDailyDAO"></property>
<property name="posReportRemedyDAO" ref="PosReportRemedyDAO"></property>
</bean>
完成了new 的功能。
那么回到刚刚的问题,分层开发中如何进行测试。很多同学会说main方法就可了,没错,不过读过刚刚的初始化问题,相信大家应该明白,不光有main就可以了。
下面为大家介绍2个类的使用:ClassPathXmlApplicationContext和FileSystemXmlApplicationContext:获得Spring中定义的Bean实例(对象).
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
RegisterDAO registerDAO = (RegisterDAO)ac.getBean("RegisterDAO");
如果是两个以上:
ApplicationContext ac = new ClassPathXmlApplicationContext(new String[]{"applicationContext.xml","dao.xml"});
或者用通配符:
ApplicationContext ac = new ClassPathXmlApplicationContext("classpath:/*.xml");
注意:ClassPathXmlApplicationContext[只能读放在web-info/classes目录下的配置文件],
FileSystemXmlApplicationContext可以取到任意路径下文件,不过需要配置路径。
对于FileSystemXmlApplicationContext:
默认表示的是两种:
1.没有盘符的是项目工作路径,即项目的根目录;
2.有盘符表示的是文件绝对路径.
如果要使用classpath路径,需要前缀classpath:
spring中对bean的管理有两种类型 ApplicationContext和BeanFactory
ApplicationContext在容器启动时候会全部初始化bean,而factory只会在调用get(“abc”)时候才会初始化
那么我们就可以用main函数来测试了。
import javax.faces.application.Application;
import org.apache.xbean.spring.context.FileSystemXmlApplicationContext;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.zjft.xconsole.common.tcp.RunInfoModuleHandle;
public class KoalaServerStart {
/**
* @param args
*/
public static void main(String[] args) {
try {
System.out.println("application begin start, please wait......");
BeanFactory appContext = new FileSystemXmlApplicationContext(
"WEB-INF/data.xml");
RunInfoModuleHandle app = (RunInfoModuleHandle) appContext.getBean("runInfoModuleHandle");
app.impDailyInfo();
} catch (Exception e) {
e.printStackTrace();
}
}
}
使用以上的代码,那么就可以实现我们要做的事了。