Spring测试内容有哪些


这篇文章主要讲解了“Spring测试内容有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Spring测试内容有哪些”吧!测试是企业软件开发的组成部分。本章重点介绍IoC原则为单元测试带来的附加价值,以及Spring框架对集成测试的支持所带来的好处。(对企业中测试的彻底处理不在本参考手册的范围之内。)与传统的Java EE开发相比,依赖注入应该使你的代码对容器的依赖程度降低。组成应用程序的POJO应该可以在JUnit或TestNG测试中进行测试,并且可以使用new运算符实例化对象,而无需使用Spring或任何其他容器。你可以使用mock对象(结合其他有价值的测试技术)单独测试代码。如果你遵循Spring的体系结构建议,那么代码库的最终分层和组件化将使单元测试更加容易。例如,你可以通过存根或模拟DAO或存储库接口来测试服务层对象,而无需在运行单元测试时访问持久性数据。真正的单元测试通常运行非常快,因为没有可设置的运行时基础架构。将真正的单元测试作为开发方法的一部分可以提高生产率。你可能不需要测试章节的这一部分来帮助你为基于ioc的应用程序编写有效的单元测试。然而,对一些单元测试场景,Spring框架提供了mock对象和测试支持类,它们在这个章节描述。Spring包含许多专用于mock的包:EnvironmentJNDIServlet APISpring Web Reactive2.1.1 Environmentorg.springframework.mock.env包包含EnvironmentPropertySource抽象mock实现。MockEnvironmentMockPropertySource对于为依赖于特定环境属性的代码开发容器外测试非常有用。2.1.2 JNDIorg.springframework.mock.jndi包包含JNDI SPI的部分实现,可用于为测试套件或独立应用程序设置简单的JNDI环境。例如,如果JDBC DataSource实例在测试代码中与在Java EE容器中绑定到相同的JNDI名称,则可以在测试场景中重用应用程序代码和配置,而无需进行修改。从Spring框架5.2开始,正式弃用了org.springframework.mock.jndi包中的mock JNDI支持,而希望使用第三方的完整解决方案,例如Simple-JNDI2.1.3 Servlet APIorg.springframework.mock.web包包含一组全面的Servlet API模拟对象,这些对象对于测试Web上下文,控制器和过滤器非常有用。这些模拟对象是针对Spring的Web MVC框架使用的,通常比动态模拟对象(例如EasyMock)或其他Servlet API模拟对象(例如MockObjects)更方便使用。从Spring框架5.0开始,org.springframework.mock.web中的模拟对象基于Servlet 4.0 API。Spring MVC测试框架建立在模拟Servlet API对象的基础上,为Spring MVC提供了集成测试框架。2.1.4 Spring Web Reactiveorg.springframework.mock.http.server.reactive包包含ServerHttpRequestServerHttpResponse的mock实现,供WebFlux应用程序使用。org.springframework.mock.web.server包包含一个模拟ServerWebExchange,它依赖于那些模 香港云主机拟请求和响应对象。MockServerHttpRequestMockServerHttpResponse都从与特定于服务器的实现相同的抽象基类扩展,并与它们共享行为。例如,模拟请求一旦创建便是不可变的,但是你可以使用ServerHttpRequest中的mutate()方法来创建修改后的实例。为了使模拟响应正确实现写契约并返回写完成句柄(即Mono ),默认情况下,它使用带有Fluxcache().then()来对数据进行缓冲并使其可用于测试中的断言。应用程序可以设置自定义编写函数(例如,测试一个无限流)。WebTestClient建立在模拟请求和响应的基础上,为不使用HTTP服务器的WebFlux应用程序测试提供支持。客户端还可以用于正在运行的服务器的端到端测试。Spring包含许多可以帮助进行单元测试的类。它们分为两类:通用测试工具Spring MVC测试工具2.2.1 通用测试工具org.springframework.test.util包包含几个通用的实用程序用于单元测试和集成测试。ReflectionTestUtils是基于反射的实用程序方法的集合。在需要更改常量值、设置非公共字段、调用非公共setter方法或调用非公共配置或生命周期回调方法的测试场景中,你可以使用这些方法ORM框架(如JPA和Hibernate)允许privateprotected的字段访问,而不是域实体中的属性的public setter方法。Spring支持注解(例如@Autowired@Inject@Resource),这些注解为privateprotected的字段,setter方法和配置方法提供依赖项注入。使用例如@PostConstruct@PreDestroy之类的注解用于生命周期回调方法。AopTestUtils是与AOP相关的实用程序方法的集合。你可以使用这些方法来获取对隐藏在一个或多个Spring代理后面的基础目标对象的引用。例如,如果你已经通过使用库(如EasyMockMockito)将bean配置为动态mock,并且该mock包装在Spring代理中,那么你可能需要直接访问底层的mock,以在其上配置期望并执行验证。有关Spring的核心AOP实用程序,请参阅AopUtils和AopProxyUtils。2.2.2 Spring MVC 测试工具org.springframework.test.web包包含ModelAndViewAssert,你可以将其与JUnit、TestNG或任何其他测试框架结合使用,以进行处理Spring MVC ModelAndView对象的单元测试。单元测试Spring MVC控制器要对作为POJO的Spring MVC Controller类进行单元测试,请将ModelAndViewAssert与Spring的Servlet API模拟中的MockHttpServletRequestMockHttpSession等结合使用。为了与Spring MVC的WebApplicationContext配置一起对Spring MVC和REST Controller类进行全面的集成测试,请改用Spring MVC测试框架。感谢各位的阅读,以上就是“Spring测试内容有哪些”的内容了,经过本文的学习后,相信大家对Spring测试内容有哪些这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是开发云,小编将为大家推送更多相关知识点的文章,欢迎关注!

相关推荐: Python中如何实现双端队列Dequeue

这篇文章给大家分享的是有关Python中如何实现双端队列Dequeue的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。双端队列Dequeue双端队列是一种有序的数据集,与队列相似,但双端队列的两端都可以作为队首和队尾(即数据在两端都可…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 10/07 10:30
下一篇 10/07 10:51

相关推荐