後臺模擬測試
現行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();
}
}
}
使用以上的代碼,那麼就可以實現我們要做的事了。