锁定老帖子 主题:spring单元测试很简单?吐血
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2004-12-09
我在web-inf下有个bean的配置片段 <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <list> <value>/WEB-INF/persist/jdbc.properties</value> </list> </property> </bean> <bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean"> <property name="configLocation"> <value>/WEB-INF/persist/sqlMapConfig.xml</value> </property> </bean> 如果单元测试 使用 FileSystemXmlApplicationContext(locs)获得ApplicationContext,但是上面配置片段中的路径会找不到. 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2004-12-09
使用ClassPath去获得ApplicationContext, locations也采用classpath去获得jdbc.properties, 懒得去搞什么FileSystem path了......
|
|
返回顶楼 | |
发表时间:2004-12-09
alin_ass 写道 如果单元测试 使用 FileSystemXmlApplicationContext(locs)获得ApplicationContext,但是上面配置片段中的路径会找不到. 这跟单元测试有什么关系?这是个环境配置问题,是属于冒烟测试的范畴。你连Spring的环境都还没配好,程序还在冒着黑烟,哪里谈得上单元测试? |
|
返回顶楼 | |
发表时间:2004-12-09
我去试下,您有现成的测试代码吗?
我的结构是这样的 webapp | |--web-inf .....|---bean1.xml .....|---bean2.xml .....|---bean3.xml .....|---classes ................|---MyTestCase1.class |
|
返回顶楼 | |
发表时间:2004-12-09
gigix 写道 alin_ass 写道 如果单元测试 使用 FileSystemXmlApplicationContext(locs)获得ApplicationContext,但是上面配置片段中的路径会找不到. 这跟单元测试有什么关系?这是个环境配置问题,是属于冒烟测试的范畴。你连Spring的环境都还没配好,程序还在冒着黑烟,哪里谈得上单元测试? web app一切正常, 就是我没法用同一套bean配置文件进行测试 |
|
返回顶楼 | |
发表时间:2004-12-09
可是单元测试你不需要通过ApplicationContext去获得对象。直接把你需要的bean new出来,把它的属性set进去,测就行了。
|
|
返回顶楼 | |
发表时间:2004-12-09
gigix 写道 可是单元测试你不需要通过ApplicationContext去获得对象。直接把你需要的bean new出来,把它的属性set进去,测就行了。
哦 ,要手动啊,5~~ |
|
返回顶楼 | |
发表时间:2004-12-09
alin_ass 写道 我去试下,您有现成的测试代码吗?
我的结构是这样的 webapp | |--web-inf .....|---bean1.xml .....|---bean2.xml .....|---bean3.xml .....|---classes ................|---MyTestCase1.class 把你的bean.xml移到classpath下面(classes目录),比如com.javaeye这个package下面。 那么web.xml里面可以这样写: <context-param> <param-name>contextConfigLocation</param-name> <param-value> classpath:/com/javaeye/bean1.xml, classpath:/com/javaeye/bean2.xml </param-value> </context-param> 单元测试用ClassPathXmlApplicationContext ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext(new String[] {"com/javaeye/bean1.xml", "com/javaeye/bean2.xml"});; 那些jdbc property和ibatis mapping文件的location也可以写成 classpath: xxx.properties 这样的好处是可以打一个jar包就把所有的东东就包含进去了...... |
|
返回顶楼 | |
发表时间:2004-12-09
:idea: 又学了一招
但是按照我的目录,配置文件放外部比较舒服点,测试只好写麻烦点拉 但是我不晓得怎么在测试里控制 数据库事务.比如下面的UserAccountDaoImpTest.testGetInsertUpdateDeleteAccount() 用SqlMapClient.startTranscation() commitTranscation()...会有问题 通过的测试 public class DaoImpTest extends TestCase { protected final void initDaoImp(SqlMapClientDaoSupport daoImp); throws Exception { String classesDirLoc = ClassLoader.getSystemResource("");.getFile();; File webinfDir = new File(classesDirLoc);.getParentFile();; //init data source InputStream is = new FileInputStream(new File(webinfDir, "jdbc.properties"););; Properties jdbcProperties = new Properties();; jdbcProperties.load(is);; BasicDataSource basicDS = new BasicDataSource();; basicDS.setDriverClassName(jdbcProperties .getProperty("jdbc.driverClassName"););; basicDS.setUrl(jdbcProperties.getProperty("jdbc.url"););; basicDS.setUsername(jdbcProperties.getProperty("jdbc.username"););; basicDS.setPassword(jdbcProperties.getProperty("jdbc.password"););; DataSource ds = basicDS; //init sqlMapClient Reader reader = new FileReader(new File(webinfDir, "sqlMapConfig.xml"););; SqlMapClient sqlMapClient = new XmlSqlMapClientBuilder(); .buildSqlMap(reader);; //init daoImp daoImp.setDataSource(ds);; daoImp.setSqlMapClient(sqlMapClient);; } } public class UserAccountDaoImpTest extends DaoImpTest { private UserAccountDao dao; protected void setUp(); throws Exception { UserAccountDaoImp daoImp = new UserAccountDaoImp();; this.initDaoImp(daoImp);; this.dao = daoImp; } public void testGetInsertUpdateDeleteAccount(); {...} } public class UserAccountDaoImp extends SqlMapClientDaoSupport implements UserAccountDao {...} |
|
返回顶楼 | |
发表时间:2004-12-09
我的dao测试很土,插个进去,读出来,删掉,再读,用事务包起来,米用过dbUnit,但是现在我做不了事务了,测试删操作失败,数据库就脏了....
|
|
返回顶楼 | |