spring2.5最大的特色就是全面使用annotation代替xml配置,包括IOC Container、springMVC和 TestContext测试框架等,给我们开发带来了极大的便利。springMVC的新特性在这篇文章里面已经有了比较详尽的介绍,而对于spring的新TestContext测试框架,大家也可以从这里得到详细的例子说明,有兴趣的可以去仔细阅读,本文不再赘述。总而言之,通过spring2.5提供的 annotation,我们可以让我们的类——包括controller,Test等职责特殊的类——更 POJO 化,更易于测试,也提高了 TestCase的开发效率。
在开发过程中,我们通常需要mock特定的对象来测试预期行为,或者使用stub对象来提高单元测试效率。最常见的例子就是在多层webapp中,在controller类的测试方法里mock或 stub底层dao类的方法,从而减轻单元测试时数据库操作的开销,加快单元测试速率。至于Reflection,已不是java的新概念了,各样框架基本上都有使用Reflection来增强Runtime的动态性。而java5里Reflection效率的提升和annotation的引入,更是极大地提高java语言的动态性,让开发人员得到更多Runtime的灵活性。本文将演示如何使用spring2.5和Reflection简化测试中的 mock,使用的JUnit框架是JUnit4.4,mock框架是Easymock2.4。
让我们先看看最原始的使用mock对象的测试(假设基于jdk5进行开发,使用了包括static import,varargs等新特性):
import static org.easymock.EasyMock.*;public void HelloworldTest extends AbstractSingleSpringContextTests { private Foo foo = createMock(Foo.class); private Bar bar = createMock(Bar.class); private Helloworld helloworld; @Before public void before() { reset(foo, bar); helloworld = new Helloworld(foo, bar); } @After public void after() { verify(foo, bar); } @Test public void shouldSayHello() { //set expectations about foo/bar replay(foo, bar); helloworld.sayHello(); //assert verification } //}
可以看到,因为使用了 Spring 老版本的 TestContext,上面的代码至少有两个方面是需要加强的:
1. 需要大量的 mock 对象创建操作,与真正的 Test Case 无关的繁琐代码,而且还引入了对Spring Context Test 类的继承依赖
2. 针对不同的 Test 类,因为用到不同的 mock 对象,每次都需要显式去指明 reset/replay/verify 用到的 mock 对象
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索框架
, springmvc
, 对象
, 测试
, reflection
, springmvc+mysql
, 单元测试
, springmvc 高并发
, spring junit测试
, mock
, java springmvc
, easymock
, java spring junit
spring单元测试junit测试
spring mock、spring mockito、spring boot mockmvc、spring mockmvc、spring mock 测试,以便于您获取更多的相关知识。