spring+struts2.0+ibatis配置问题
原来配置过struts1.0的,看了下这个配置最大的区别就是在与struts2.0自身的配置有变化。但是其中有一点始终是没搞明白。特请教高手指点。我把问题放到空间里了,请...
原来配置过struts1.0的,看了下这个配置最大的区别就是在与struts2.0自身的配置有变化。但是其中有一点始终是没搞明白。特请教高手指点。
我把问题放到空间里了,请朋友们帮忙看下
http://hi.baidu.com/citysun2009/blog/item/8c51b6aef754e5f1fbed50de.html 展开
我把问题放到空间里了,请朋友们帮忙看下
http://hi.baidu.com/citysun2009/blog/item/8c51b6aef754e5f1fbed50de.html 展开
2个回答
展开全部
TDD开发,可能国内用的人比较少。但我认为,这种开发模式是很值得引入的。首先,它不用程序员反复启动服务,就可以找到自己程序的问题,这样会提高开发效率(一般启动服务是一个痛苦的过程)。其次,这种方法比较灵活,程序的执行方向可以不按现实逻辑进行,这样我们就可以检测一些手动不便测试到的内容。最后,实现方法多种多样,简便宜行。
下面我来介绍一下我的方法。
在介绍之前,我先阐述一下我现在的应用环境:
我的Severlet:Tomcate
我的框架采用:Spring+Struts2.0+ibatis
我的单元测试采用框架是:Junit4还有一个国内可能应用不多的gienah testing
我的集成测试将采用框架是:Junit4和Ant。
我的黑盒测试将要采用的是:Junit4,Ant和selenium
下面先说一下单元测试:
我的程序目录是这样的:
这种目录结构相信是比较经典的了。但是如果使用Junit进行单元测试,这个结构就有些笨拙。由于Spring的配置文件并没有在ClassPath中,所以,进行带有Spring的测试必须指明Spring配置文件的全路径。还有就是在Sping配置中包含的其它配置如ibatis的配置问题,这真的是很头疼。(我用了这个方法后找到了Spring的配置可在Spring中的配置一直找不到,目前我还不知如何解决。)还有一种就是大家常用的Ant,这个方法也是不错的,我还没有试过。我想给大家介绍的是我用的这种方法,与前两种不同,我的思路很简单,只是把WEB-INF设到了类路径中,我目前的目录结构如下:(。。没办法加不上图了。。。。)用这种方式还是有一定的问题,Spring的配置还是要略微修改一下。在我的Spring配置中只需要改成这样:
Xml代码
<!-- ibatis配置管理 -->
<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocation">
<!-- value>WEB-INF/SqlMapconfig.xml</value-->
<value>SqlMapconfig.xml</value>
</property>
</bean>
<!-- ibatis配置管理 -->
<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocation">
<!-- value>WEB-INF/SqlMapconfig.xml</value-->
<value>SqlMapconfig.xml</value>
</property>
</bean>如果是集成测试时需要用注视部分替换现有部分。下面给出一个用 gienah testing写的测试类:
Java代码
package test.web.Dao;
import java.util.Date;
import org.gienah.testing.junit.Configuration;
import org.gienah.testing.junit.Dependency;
import org.gienah.testing.junit.SpringRunner;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import test.web.Base.TestSpringBase;
import com.web.manage.JAdvert;
import com.web.manageDao.AdvertDao;
@RunWith(value=SpringRunner.class)
@Configuration(locations={"applicationContext.xml"})
public class TestAdvertDao extends TestSpringBase
{
private JAdvert advertTest = new JAdvert();
@Dependency
private AdvertDao advertDao;
@Before
public void setUp() throws Exception
{
advertTest.setAdLocation(1);
advertTest.setEntertime(new Date());
advertTest.setImageID(1);
advertTest.setUrl("1");
}
@After
public void tearDown() throws Exception
{
advertTest = null;
advertDao = null;
}
@Test
public void testSave()
{
Assert.assertTrue(advertDao.insertAdvert(advertTest)>0);
}
@Test
public void testDel()
{
advertDao.delAdvert(1);
}
@Test
public void testGetBaseid()
{
JAdvert advert = advertDao.getAdvert(0);
Assert.assertNull(advert);
}
@Test
public void testUpdataAdvert()
{
JAdvert advert = advertDao.getAdvert(2);
Assert.assertNotNull(advert);
advert.setUrl("www.test.com");
advertDao.updataAdvert(advert);
}
}
package test.web.Dao;
import java.util.Date;
import org.gienah.testing.junit.Configuration;
import org.gienah.testing.junit.Dependency;
import org.gienah.testing.junit.SpringRunner;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import test.web.Base.TestSpringBase;
import com.web.manage.JAdvert;
import com.web.manageDao.AdvertDao;
@RunWith(value=SpringRunner.class)
@Configuration(locations={"applicationContext.xml"})
public class TestAdvertDao extends TestSpringBase
{
private JAdvert advertTest = new JAdvert();
@Dependency
private AdvertDao advertDao;
@Before
public void setUp() throws Exception
{
advertTest.setAdLocation(1);
advertTest.setEntertime(new Date());
advertTest.setImageID(1);
advertTest.setUrl("1");
}
@After
public void tearDown() throws Exception
{
advertTest = null;
advertDao = null;
}
@Test
public void testSave()
{
Assert.assertTrue(advertDao.insertAdvert(advertTest)>0);
}
@Test
public void testDel()
{
advertDao.delAdvert(1);
}
@Test
public void testGetBaseid()
{
JAdvert advert = advertDao.getAdvert(0);
Assert.assertNull(advert);
}
@Test
public void testUpdataAdvert()
{
JAdvert advert = advertDao.getAdvert(2);
Assert.assertNotNull(advert);
advert.setUrl("www.test.com");
advertDao.updataAdvert(advert);
}
}上面的只是对单个的类测试实用,下面介绍一下集成测试。首先我们要建立一个测试基类,比如像如下代码
Java代码
package test.web.Base;
import org.gienah.testing.junit.Configuration;
import org.gienah.testing.junit.SpringRunner;
import org.junit.runner.RunWith;
@RunWith(value=SpringRunner.class)
@Configuration(locations={"applicationContext.xml"})
public class TestSpringBase
{
}
package test.web.Base;
import org.gienah.testing.junit.Configuration;
import org.gienah.testing.junit.SpringRunner;
import org.junit.runner.RunWith;
@RunWith(value=SpringRunner.class)
@Configuration(locations={"applicationContext.xml"})
public class TestSpringBase
{
}之后,Test单个测试的类就改成如下形式(这里省略具体的细节,只说明主要的变化)
Java代码
@RunWith(value=SpringRunner.class)
@Configuration(provider=TestSpringBase.class)
public class TestAdvertDao extends TestSpringBase
@RunWith(value=SpringRunner.class)
@Configuration(provider=TestSpringBase.class)
public class TestAdvertDao extends TestSpringBase看到了吧。就是Configuration这发生了一点变化。变成这们的好处是,我们可以不用一个类加载一点Spring的配置了。对于我们做集成测试很有帮助。好了,现在我们可以将单个的测试类集成到我们的测试总类中了。
代码如下:
Java代码
@RunWith(value=Suite.class)
@Suite.SuiteClasses({TestCompanyDao.class,TestAdvertDao.class,TestImageBridgeDao.class,TestImageDao.class,TestNewsDao.class,TestOperatoinDao.class,TestReportManDao.class,TestUserDao.class})
public class TestAllSuit
{
}
@RunWith(value=Suite.class)
@Suite.SuiteClasses({TestCompanyDao.class,TestAdvertDao.class,TestImageBridgeDao.class,TestImageDao.class,TestNewsDao.class,TestOperatoinDao.class,TestReportManDao.class,TestUserDao.class})
public class TestAllSuit
{
}看很简单吧。这是我的测试Suite哈哈。这样这部分的工作就做完了。
这个测试类很有JUnit4的风格吧。用了gienah testing发现喜欢上它了,虽然Spring的新版本已经开始支持JUNIT4了,可我还是喜欢gienah testing的风格。这就叫萝卜白菜各有所爱吧。
下面我来介绍一下我的方法。
在介绍之前,我先阐述一下我现在的应用环境:
我的Severlet:Tomcate
我的框架采用:Spring+Struts2.0+ibatis
我的单元测试采用框架是:Junit4还有一个国内可能应用不多的gienah testing
我的集成测试将采用框架是:Junit4和Ant。
我的黑盒测试将要采用的是:Junit4,Ant和selenium
下面先说一下单元测试:
我的程序目录是这样的:
这种目录结构相信是比较经典的了。但是如果使用Junit进行单元测试,这个结构就有些笨拙。由于Spring的配置文件并没有在ClassPath中,所以,进行带有Spring的测试必须指明Spring配置文件的全路径。还有就是在Sping配置中包含的其它配置如ibatis的配置问题,这真的是很头疼。(我用了这个方法后找到了Spring的配置可在Spring中的配置一直找不到,目前我还不知如何解决。)还有一种就是大家常用的Ant,这个方法也是不错的,我还没有试过。我想给大家介绍的是我用的这种方法,与前两种不同,我的思路很简单,只是把WEB-INF设到了类路径中,我目前的目录结构如下:(。。没办法加不上图了。。。。)用这种方式还是有一定的问题,Spring的配置还是要略微修改一下。在我的Spring配置中只需要改成这样:
Xml代码
<!-- ibatis配置管理 -->
<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocation">
<!-- value>WEB-INF/SqlMapconfig.xml</value-->
<value>SqlMapconfig.xml</value>
</property>
</bean>
<!-- ibatis配置管理 -->
<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocation">
<!-- value>WEB-INF/SqlMapconfig.xml</value-->
<value>SqlMapconfig.xml</value>
</property>
</bean>如果是集成测试时需要用注视部分替换现有部分。下面给出一个用 gienah testing写的测试类:
Java代码
package test.web.Dao;
import java.util.Date;
import org.gienah.testing.junit.Configuration;
import org.gienah.testing.junit.Dependency;
import org.gienah.testing.junit.SpringRunner;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import test.web.Base.TestSpringBase;
import com.web.manage.JAdvert;
import com.web.manageDao.AdvertDao;
@RunWith(value=SpringRunner.class)
@Configuration(locations={"applicationContext.xml"})
public class TestAdvertDao extends TestSpringBase
{
private JAdvert advertTest = new JAdvert();
@Dependency
private AdvertDao advertDao;
@Before
public void setUp() throws Exception
{
advertTest.setAdLocation(1);
advertTest.setEntertime(new Date());
advertTest.setImageID(1);
advertTest.setUrl("1");
}
@After
public void tearDown() throws Exception
{
advertTest = null;
advertDao = null;
}
@Test
public void testSave()
{
Assert.assertTrue(advertDao.insertAdvert(advertTest)>0);
}
@Test
public void testDel()
{
advertDao.delAdvert(1);
}
@Test
public void testGetBaseid()
{
JAdvert advert = advertDao.getAdvert(0);
Assert.assertNull(advert);
}
@Test
public void testUpdataAdvert()
{
JAdvert advert = advertDao.getAdvert(2);
Assert.assertNotNull(advert);
advert.setUrl("www.test.com");
advertDao.updataAdvert(advert);
}
}
package test.web.Dao;
import java.util.Date;
import org.gienah.testing.junit.Configuration;
import org.gienah.testing.junit.Dependency;
import org.gienah.testing.junit.SpringRunner;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import test.web.Base.TestSpringBase;
import com.web.manage.JAdvert;
import com.web.manageDao.AdvertDao;
@RunWith(value=SpringRunner.class)
@Configuration(locations={"applicationContext.xml"})
public class TestAdvertDao extends TestSpringBase
{
private JAdvert advertTest = new JAdvert();
@Dependency
private AdvertDao advertDao;
@Before
public void setUp() throws Exception
{
advertTest.setAdLocation(1);
advertTest.setEntertime(new Date());
advertTest.setImageID(1);
advertTest.setUrl("1");
}
@After
public void tearDown() throws Exception
{
advertTest = null;
advertDao = null;
}
@Test
public void testSave()
{
Assert.assertTrue(advertDao.insertAdvert(advertTest)>0);
}
@Test
public void testDel()
{
advertDao.delAdvert(1);
}
@Test
public void testGetBaseid()
{
JAdvert advert = advertDao.getAdvert(0);
Assert.assertNull(advert);
}
@Test
public void testUpdataAdvert()
{
JAdvert advert = advertDao.getAdvert(2);
Assert.assertNotNull(advert);
advert.setUrl("www.test.com");
advertDao.updataAdvert(advert);
}
}上面的只是对单个的类测试实用,下面介绍一下集成测试。首先我们要建立一个测试基类,比如像如下代码
Java代码
package test.web.Base;
import org.gienah.testing.junit.Configuration;
import org.gienah.testing.junit.SpringRunner;
import org.junit.runner.RunWith;
@RunWith(value=SpringRunner.class)
@Configuration(locations={"applicationContext.xml"})
public class TestSpringBase
{
}
package test.web.Base;
import org.gienah.testing.junit.Configuration;
import org.gienah.testing.junit.SpringRunner;
import org.junit.runner.RunWith;
@RunWith(value=SpringRunner.class)
@Configuration(locations={"applicationContext.xml"})
public class TestSpringBase
{
}之后,Test单个测试的类就改成如下形式(这里省略具体的细节,只说明主要的变化)
Java代码
@RunWith(value=SpringRunner.class)
@Configuration(provider=TestSpringBase.class)
public class TestAdvertDao extends TestSpringBase
@RunWith(value=SpringRunner.class)
@Configuration(provider=TestSpringBase.class)
public class TestAdvertDao extends TestSpringBase看到了吧。就是Configuration这发生了一点变化。变成这们的好处是,我们可以不用一个类加载一点Spring的配置了。对于我们做集成测试很有帮助。好了,现在我们可以将单个的测试类集成到我们的测试总类中了。
代码如下:
Java代码
@RunWith(value=Suite.class)
@Suite.SuiteClasses({TestCompanyDao.class,TestAdvertDao.class,TestImageBridgeDao.class,TestImageDao.class,TestNewsDao.class,TestOperatoinDao.class,TestReportManDao.class,TestUserDao.class})
public class TestAllSuit
{
}
@RunWith(value=Suite.class)
@Suite.SuiteClasses({TestCompanyDao.class,TestAdvertDao.class,TestImageBridgeDao.class,TestImageDao.class,TestNewsDao.class,TestOperatoinDao.class,TestReportManDao.class,TestUserDao.class})
public class TestAllSuit
{
}看很简单吧。这是我的测试Suite哈哈。这样这部分的工作就做完了。
这个测试类很有JUnit4的风格吧。用了gienah testing发现喜欢上它了,虽然Spring的新版本已经开始支持JUNIT4了,可我还是喜欢gienah testing的风格。这就叫萝卜白菜各有所爱吧。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询