现正开发一个FLEX+JAVA的项目,后台持久层是IBATIS,利用MAVEN管理。后台的manager,logic,dao的依赖关系都写在web工程下的WEB-INF/bean.xml里。
但是为了实现DAO层或者Logic层的单元测试,就必须把依赖关系写到对应层的资源目录下。
于是打算把bean.xml进行分割,简记如下:
DAO层:applicationContext-persist.xml
...
<bean id="getNonConcurrentDAO"
class="com.xxx.dao.customize.GetNonConcurrentDAOImpl">
<property name="sqlMapClient" ref="sqlMapClient" />
</bean>
... LOGIC层:applicationContext-logic-master.xml
...
<bean id="concurrentCheckLogic"
class="com.xxx.logic.impl.ConcurrentCheckLogic">
<property name="transactionManager" ref="transactionManager" />
<property name="getNonConcurrentDAO" ref="getNonConcurrentDAO"/>
</bean>
...
可是用TestNG测试的时候出了问题,找不到getNonConcurrentDAO。
必须得把DAO层的applicationContext-persist.xml拷贝到LOGIC层的资源目录下才可以。想请教大家,问题出在了哪里?怎么解决?针对单元测试有没有什么解决的办法。
但是为了实现DAO层或者Logic层的单元测试,就必须把依赖关系写到对应层的资源目录下。
于是打算把bean.xml进行分割,简记如下:
DAO层:applicationContext-persist.xml
...
<bean id="getNonConcurrentDAO"
class="com.xxx.dao.customize.GetNonConcurrentDAOImpl">
<property name="sqlMapClient" ref="sqlMapClient" />
</bean>
... LOGIC层:applicationContext-logic-master.xml
...
<bean id="concurrentCheckLogic"
class="com.xxx.logic.impl.ConcurrentCheckLogic">
<property name="transactionManager" ref="transactionManager" />
<property name="getNonConcurrentDAO" ref="getNonConcurrentDAO"/>
</bean>
...
可是用TestNG测试的时候出了问题,找不到getNonConcurrentDAO。
必须得把DAO层的applicationContext-persist.xml拷贝到LOGIC层的资源目录下才可以。想请教大家,问题出在了哪里?怎么解决?针对单元测试有没有什么解决的办法。
ClassPathXmlApplicationContext appContext = new ClassPathXmlApplicationContext(
new String[] { "DAO.xml", "SERVICE.xml" }); TrubyService service = (TrubyService) appContext
.getBean("trubyService ");
但是,spring的配置文件也是一部分测试内容,所以我觉得应该尽量保持各层的独立性进行测试。我觉得比较奇怪的一点是:DAO层生成了JAR包后,这些依赖关系就应该指明了啊,logic层为什么不能直接调用呢?怎么写才是对的呢?