当前位置: 首页 > news >正文

湖南平台网站建设制作关键词调价工具哪个好

湖南平台网站建设制作,关键词调价工具哪个好,怎么样新建一个网站,包头网站建设哪家好spring框架mvc框架最新推出的主要Spring框架是Spring MVC测试框架#xff0c;Spring Guys声称它是“一流的JUnit支持#xff0c;可通过流畅的API测试客户端和服务器端Spring MVC代码” 1 。 在这个博客以及下一个博客中#xff0c;我将看一看Spring的MVC测试框架#xff0c… spring框架mvc框架 最新推出的主要Spring框架是Spring MVC测试框架Spring Guys声称它是“一流的JUnit支持可通过流畅的API测试客户端和服务器端Spring MVC代码” 1 。 在这个博客以及下一个博客中我将看一看Spring的MVC测试框架并将其应用于我现有的一些示例代码中以弄清它是否能如其所愿。 该API通过两种设置服务器端测试的方式进行了设计。 首先它们带有Spring上下文文件其次以编程方式没有上下文文件。 Spring的Guy将该程序化方法称为“独立”模式。 以编程方式设置测试似乎更类似于单元测试并且最好用于对特定的控制器类进行独立于其协作者的单元测试。 另一方面加载Spring上下文文件的操作实际上是集成测试并且更适合端到端测试。 您可以在此处找到有关测试技术的博客的完整列表。 如果您像我一样那么您已经在使用现有的框架例如Mockito或Easymock来测试您的控制器。 通常的Mockito / Easymock方法是实例化您的控制器注入模拟或存根依赖性然后调用被测方法注意返回值或验证模拟方法调用。 Spring Mvc Test框架采用了与其他模拟框架不同的方法因为它加载了Spring DispatcherServlet以模拟Web容器的操作。 然后将被测试的控制器加载到Spring上下文中然后像在“现实生活中”那样由DispatcherServlet访问。 这种方法的好处是它允许您将控制器作为控制器而不是POJO进行测试。 这意味着将处理并考虑控制器的注释执行验证并以正确的顺序调用方法。 您是否同意这种方法并取决于您对测试技术的看法。 如果您认为应该将测试的每个类/方法都隔离到第n个级别并且每个测试都应完全原子化那么这可能不适合您。 如果您比较实用并且可以将测试控制器的好处看作是……一个控制器那么此框架可能是您感兴趣的。 与Mockito和Easymock的方法有所不同缺点是代码看起来与这些较老的更成熟的技术不同。 它在很大程度上依赖于构建器模式来构造匹配器请求构建器和处理程序一旦掌握了这些这一切就变得很有意义。 我怀疑使用构建器模式的动机是为了简化模拟HttpServletRequest的设置以及对模拟HttpServletResponse对象的询问这从定义HttpServletResponse可能非常棘手。 在此博客中我将看一下Spring API的编程/独立技术并将其与类似的基于Mockito的单元测试进行比较。 为了加快处理速度我使用了Blue Peter方法“这是我之前准备的方法”并从我的Facebook博客中获取了FacebookPostsController 我将为此编写两个单元测试类第一个使用Mockito另一个使用Spring Mvc测试API。 控制器代码如下 Controller public class FacebookPostsController { private static final Logger logger LoggerFactory .getLogger(FacebookPostsController.class); Autowired private SocialContext socialContext; RequestMapping(value posts, method RequestMethod.GET) public String showPostsForUser(HttpServletRequest request, HttpServletResponse response, Model model) throws Exception { String nextView; if (socialContext.isSignedIn(request, response)) { ListPost posts retrievePosts(); model.addAttribute(posts, posts); nextView show-posts; } else { nextView signin; } return nextView; } private ListPost retrievePosts() { Facebook facebook socialContext.getFacebook(); FeedOperations feedOps facebook.feedOperations(); ListPost posts feedOps.getHomeFeed(); logger.info(Retrieved posts.size() posts from the Facebook authenticated user); return posts; } } 我不打算讲这段代码的背景因为它可以在Facebook博客中找到 。 但是总而言之Facebook示例应用程序访问用户的Facebook帐户并在示例应用程序中显示其新闻提要。 为此 FacebookPostsController检查SocialContext类以确定用户是否已登录其Facebook帐户。 如果用户登录到其Facebook帐户则控制器将检索用户的帖子并将其添加到模型中以进行显示。 另一方面如果用户未登录则将他们定向到登录页面。 两个单元测试类中的每一个都将包含三个公共方法 我将依次检查setup() testShowPostsForUser_user_is_not_signed_in和testShowPostsForUser_user_is_signed_in 。 如您所料测试testShowPostsForUser_user_is_not_signed_in和testShowPostsForUser_user_is_signed_in用于测试用户登录和未登录其Facebook帐户的情况。 “标准” Mockito测试 Before public void setUp() throws Exception { MockitoAnnotations.initMocks(this); instance new FacebookPostsController(); ReflectionTestUtils.setField(instance, socialContext, socialContext); } 设置代码相当简单包含三个简单步骤 使用MockitoAnnotations.initMocks(this)初始化模拟对象。 创建一个新的FacebookPostsController实例被测试的对象。 将模拟的SocialContext注入FacebookPostsController 。 Test public void testShowPostsForUser_user_is_not_signed_in() throws Exception { when(socialContext.isSignedIn(request, response)).thenReturn(false); String result instance.showPostsForUser(request, response, model); assertEquals(signin, result); } testShowPostsForUser_user_is_not_signed_in方法将模拟的SocialContext配置为在调用其isSignedIn()方法时返回false 。 这意味着剩下要做的就是断言showPostsForUser(...)方法返回signin将用户定向到登录页面。 Test public void testShowPostsForUser_user_is_signed_in() throws Exception { when(socialContext.isSignedIn(request, response)).thenReturn(true); when(socialContext.getFacebook()).thenReturn(facebook); when(facebook.feedOperations()).thenReturn(feedOps); ListPost posts Collections.emptyList(); when(feedOps.getHomeFeed()).thenReturn(posts); String result instance.showPostsForUser(request, response, model); verify(model).addAttribute(posts, posts); assertEquals(show-posts, result); } testShowPostsForUser_user_is_signed_in稍微复杂一些。 在将模拟的SocialContext配置为在调用其isSignedIn()方法时返回true 还有另外四行代码可确保从模拟Facebook提要中返回posts列表并将其添加到模拟Model 。 调用showPostsForUser(...)之后需要完成两个附加步骤验证模拟Model包含posts列表并断言showPostsForUser(...)的返回值为show-posts 。 接下来Spring MVC Test框架代码 但是在开始之前您需要将以下依赖项添加到POM文件 dependencygroupIdorg.springframework/groupIdartifactIdspring-test/artifactIdversion${org.springframework-version}/versionscopetest/scope/dependencySpring MVC测试 Spring MVC测试框架版本运行相同的两个测试但是方式不同…… Before public void setUp() throws Exception { MockitoAnnotations.initMocks(this); FacebookPostsController instance new FacebookPostsController(); ReflectionTestUtils.setField(instance, socialContext, socialContext); mockMvc MockMvcBuilders.standaloneSetup(instance).build(); } 如果看一下上面的代码就可以看到就setup(...)而言它看起来与上面的直接Mockito代码非常相似。 像基于Mockito的测试一样第一步是使用初始化模拟对象 MockitoAnnotations.initMocks(this) 然后创建一个FacebookPostsController的新实例将模拟的SocialContext注入其中。 但是这一次 FacebookPostsController状态已降级为局部变量因为设置的重点是创建Spring的MockMvc实例该实例用于执行测试。 该mockMvc是通过调用创建MockMvcBuilders.standaloneSetup(instance).build()其中instance是FacebookPostsController对象我们正在测试。 Test public void testShowPostsForUser_user_is_not_signed_in() throws Exception { HttpServletRequest request anyObject(); HttpServletResponse response anyObject(); when(socialContext.isSignedIn(request, response)).thenReturn(false); MockHttpServletRequestBuilder getRequest get(/posts).accept(MediaType.ALL); ResultActions results mockMvc.perform(getRequest); results.andExpect(status().isOk()); results.andExpect(view().name(signin)); } 与Mockito版本类似 testShowPostsForUser_user_is_not_signed_in方法将模拟的SocialContext配置为在调用其isSignedIn()方法时返回false 。 这次下一步是使用静态方法创建一个称为MockHttpServletRequestBuilder东西。 MockMvcRequestBuilders.get(...)和构建器模式。 这被传递到mockMVC.perform(...)方法中在此方法中该方法用于创建MockHttpServletRequest对象该对象用于定义测试的起点。 在此测试中我要做的只是传递/posts URL并将输入设置为“ any”媒体类型。 您可以使用诸如contentType() contextPath() cookie()等方法配置许多其他请求对象属性。有关更多信息请查看Spring Javadoc中的MockHttpServletRequest mockMvc.perform()方法返回一个ResultActions对象。 这似乎是实际MvcResult的包装。 ResultsActions是一个便捷对象用于以与JUnit的assertEquals(...)或Mockito的verify(..)方法相同的方式声明测试结果。 在这种情况下我正在检查结果Http状态是否正常即200并且下一个视图将signin 。 此测试与仅Mockito版本之间的区别在于您不是直接测试对测试实例的方法调用的结果 您正在测试方法调用生成的HttpServletResponse对象。 Test public void testShowPostsForUser_user_is_signed_in() throws Exception { HttpServletRequest request anyObject(); HttpServletResponse response anyObject(); when(socialContext.isSignedIn(request, response)).thenReturn(true); when(socialContext.getFacebook()).thenReturn(facebook); when(facebook.feedOperations()).thenReturn(feedOps); ListPost posts Collections.emptyList(); when(feedOps.getHomeFeed()).thenReturn(posts); mockMvc.perform(get(/posts).accept(MediaType.ALL)).andExpect(status().isOk()) .andExpect(model().attribute(posts, posts)) .andExpect(view().name(show-posts)); } testShowPostsForUser_user_is_signed_in方法的Spring Test版本与Mockito版本非常相似该测试是通过将SocialContext.isSignedIn()方法配置为返回true以及feedOps.getHomeFeed()配置为返回posts列表来准备测试的。 此方法的Spring Mvc Test部分与上述testShowPostsForUser_user_is_not_signed_in版本几乎相同除了这次它使用andExpect(view().name(show-posts)检查下一个视图名称为show-posts而不是sign-in andExpect(view().name(show-posts)我在这里使用的代码样式与我在上面使用的样式有所不同并且是Spring的Guy偏爱的样式。如果您能在Github上找到更多这种样式的示例持有Spring MVC Showcase应用。 那么您可以从此比较中得出什么结论 公平地说这不是真正的比较– Spring MVC Test API在建立标准Mockito技术的基础上采用了不同的方法创建了一个框架旨在仅在其本机运行时环境的模型中对Spring MVC控制器进行测试。 。 这对您是否有用我会让您决定。 它确实具有将控制器视为控制器而不是POJO的优点这意味着它们已经过更彻底的测试。 从个人的角度来看我喜欢加载Spring配置文件并将其用于集成测试的想法这将在我的下一个博客中介绍。 1请参阅 http : //static.springsource.org/spring/docs/3.2.x/spring-framework-reference/html/testing.html#spring-mvc-test-framework 该博客的代码可在GitHub上找到 https //github.com/roghughe/captaindebug/tree/master/facebook 参考 Spring的MVC测试框架入门–第一部分来自JCG合作伙伴 Roger Hughes来自Captain Debug的Blog博客。 翻译自: https://www.javacodegeeks.com/2013/07/getting-started-with-springs-mvc-test-framework-part-1.htmlspring框架mvc框架
http://www.pierceye.com/news/339188/

相关文章:

  • 有保障的无锡网站制作wordpress怎么映射到外网访问不了
  • 邯郸网站设计怎么做移动网站 用户体验
  • 实验报告网站建设与网页制作oa系统是什么
  • 信息发布网站开发模板提高网站响应速度
  • 本科网站开发毕业设计贵阳平台网站建设
  • 安徽省建设厅网站打不开杭州建设网 执法人员名单
  • 外贸网站建站公司如何做滴滴网站平台
  • 淄博张店做网站的公司建筑设计公司资质等级
  • 一个网站的建设需要哪些流程图eclipse的开发网站开发
  • 网站链接跳转怎么做建立数据库连接时出错wordpress
  • 漳州网站建设选博大不错江苏省建设工程注册中心网站
  • 文件下载网站源码免费做网站空间
  • 怎样给公司做一个网站做推广新网域名管理平台
  • 新蔡县做网站收多少钱二级分销利润分配模式
  • 鞍山百度网站怎么制作python培训视频教程
  • 湛江网站建设与网页网站建设需要什么证件
  • 东莞建站公司案例全网天下案例wordpress入门教程知乎
  • 网站策划书包含的内容化工设计网站
  • 做网站推广电话网站建设制作免费推广
  • 如何发布网站响应式商城网站
  • 网站建设应用程序开发网站建设的意义以及重要性
  • 网站建设进度说明嘉兴公司制作网站的
  • 山东省建设注册管理网站手机免费网站制作
  • 台州网站制作套餐如何查询网站的主机
  • 毕业设计代做哪个网站好房产中介如何找客源
  • 怎么下载自己做的网站杭州互联网公司排名
  • 做曖視頻网站网站开发设计流程论文
  • 北京移动官网网站建设凡科做的网站好吗
  • 申请网站域名怎么做wordpress金融主题
  • 中国建设银行移动门户网站wordpress 生成html代码