知识大全 Spring应用的单元测试

Posted

篇首语:搓绳不能松劲,前进不能停顿。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Spring应用的单元测试相关的知识,希望对你有一定的参考价值。

Spring应用的单元测试  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

    单元测试现在越来越被广泛重视起来 而Spring更是将时下比较流行的Junit开元测试框架进行整合下面我简单的介绍一下在Sping中该如何对代码进行单元测试(本节会认为读者已经具备了Junit基础方面的知识) 按照Spring的推荐 在单元测试时不应该依赖于Spring容器 也就是说不应该在单元测试是启动ApplicationContext并从中获取Bean 相反应该通过模拟对象完成单元测试 而Spring就提供了这样一个类供大家继承 下面来看看示例代码         )自动装配的测试用例        代码清单         import springframework beans factory annotation Autowired;        import springframework stereotype Service;        import tony web dao FooDao;        @Service        public class FooService         @Autowired        private FooDao dao;        public String save(String name)        if(name == null || equals(name))        throw new RuntimeException( Name is null )         return dao save(name)                         import springframework stereotype Repository;        @Repository        public class FooDao         public String save(String name)        return success ;                        import springframework test         AbstractDependencyInjectionSpringContextTests;        import tony web service FooService;        public class MyTest extends AbstractDependencyInjectionSpringContextTests        protected FooService fooService;        //set方法        public void setFooService(FooService fooService)         this fooService = fooService;                //指定Spring配置文件的位置        protected String[] getConfigLocations()        return new String[] spring config beans xml ;                //测试方法        public void testSave()        String str = this fooService save( Tony )         System out print(str)         assertEquals( success str)                         <?xml version= encoding= UTF ?>        <beans xmlns=//…>        <context:ponent scan base package= tony />        </beans>        代码清单 中定义了FooService java和FooDao java两个Bean已经使用 @Autowired进行了装配 我们的单元测试类MyTest继承了        AbstractDependencyInjectionSpringContextTests类 配置好fooService的set方法并且指定Spring配置文件的位置后 当测试用例运行时我们需要的fooService会自动注入进来 我们只要在testSave方法中直接使用就可以了 还有两外一种写法        代码清单         public class MyTest extends AbstractDependencyInjectionSpringContextTests        protected FooService fooService;        public MyTest()        //启用直接对属性变量进行注入的机制        this setPopulateProtectedVariables(true)                 protected String[] getConfigLocations()        return new String[] spring config beans xml ;                public void testSave()        String str = this fooService save( Tony )         System out print(str)         assertEquals( success str)                         代码清单 中我们移除了set方法 增加了一个构造函数 在构造函数中调用父类的方法启用直接对属性变量进行注入的机制 有时我们测试的时候会操作数据库插入一条记录 由于我们不会每次都修改测试的数据 当我们再次插入同样的数据时数据库肯定会要报错了 此时我们需要既能测试又能不让测试的数据在数据库中起作用 Spring就知道我们的这个需要 为我们准备了AbstractTransactionalSpringContextTests这个类         代码清单         import springframework test         AbstractTransactionalSpringContextTests;        import tony web service FooService;        public class MyTest extends AbstractTransactionalSpringContextTests        protected FooService fooService;        public MyTest()        this setPopulateProtectedVariables(true)                 protected String[] getConfigLocations()        return new String[] spring config beans xml ;                //测试方法中的数据操作将在方法返回前被回滚 不会对数据库产生永久性数据操作 下一//次运行该测试方法时 依旧可以成功运行         public void testSave()        String str = this fooService save( Tony )         System out print(str)         assertEquals( success str)                         这样就可以在方法返回之前将测试数据回滚 以保证下次单元测试的成功 cha138/Article/program/Java/ky/201311/28838

相关参考

知识大全 Spring+Hibernate的单元测试JUnit

Spring+Hibernate的单元测试JUnit  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 通过Spring2.5对单元测试的Annotation支持进行TDD开发

通过Spring2.5对单元测试的Annotation支持进行TDD开发  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们

知识大全 进行Struts应用程序单元测试开发

进行Struts应用程序单元测试开发  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一引言  测

知识大全 利用spring2.5和Reflection简化测试中的mock[3]

利用spring2.5和Reflection简化测试中的mock[3]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶

知识大全 利用spring2.5和Reflection简化测试中的mock[2]

利用spring2.5和Reflection简化测试中的mock[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶

知识大全 利用spring2.5和Reflection简化测试中的mock[1]

利用spring2.5和Reflection简化测试中的mock[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶

知识大全 JBuilder2005单元测试之创建测试固件

JBuilder2005单元测试之创建测试固件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在

知识大全 JBuilder2005单元测试体验之测试配置

JBuilder2005单元测试体验之测试配置  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在

知识大全 单元+期末复习与测试答案/八年级上数学/北版/吉林出版,注意,我要答案

单元+期末复习与测试答案/八年级上数学/北版/吉林出版,注意,我要答案!单元+期末复习与测试题目/八年级上数学/北版/吉林出版,注意,我要题目!我要详细的题目单元+期末复习与测试答案/八年级上语文/人

知识大全 使用MOCK对象进行单元测试

使用MOCK对象进行单元测试  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  出了什么问题?&nb