新余网站建设公司,rp怎么做网站,外包和劳务派遣哪个好,制作网站的模板下载软件即使同时使用ContextConfiguration和SpringApplicationConfiguration批注以及SpringJUnit4ClassRunner来指定如何加载Spring应用程序上下文#xff0c;它们之间也存在细微的差异。 尽管ContextConfiguration在加载应用程序上下文方面表现出色#xff0c;但没有充分利用Spring… 即使同时使用ContextConfiguration和SpringApplicationConfiguration批注以及SpringJUnit4ClassRunner来指定如何加载Spring应用程序上下文它们之间也存在细微的差异。 尽管ContextConfiguration在加载应用程序上下文方面表现出色但没有充分利用Spring Boot的功能 。 Spring Boot应用程序最终由SpringApplication对于JAR而言或SpringBootServletInitializer加载。 此类不仅加载应用程序上下文而且还允许记录和加载application.properties或application.yml文件中指定的外部属性以及Spring Boot框架未加载或启用的其他功能。 ContextConfiguration批注。 简而言之最好使用SpringApplicatoinConfiguration批注而不是ContextConfiguration来编写针对Spring Boot应用程序的集成测试包括针对网页或应用程序前端的测试。 现在您已经知道在编写Spring引导测试时ContextConfiguration和SpringApplicationConfiguration批注之间的本质区别让我们了解一些代码示例的更多细节。 自从Spring 2.5引入SpringJUnit4ClassRunner以来Spring Framework就为编写集成测试提供了出色的支持并且对于使用Spring Boot应用程序进行测试也是如此。 在集成测试期间您还需要加载bean并将它们与依赖项连接起来。 当然您可以手动执行此操作但是最好由Spring为您处理这样做会更好。 它还提供了开箱即用的功能例如组件扫描自动装配声明事务管理安全性和缓存这些功能对于在更像生产环境中的测试非常方便。 Spring Boot- ContextConfiguration示例 这是一个简单的Spring集成测试其中包含SpringJUnit4ClassRunner和ContextConfiguration批注这是用于加载应用程序上下文的基本Spring引导批注之一 RunWith (SpringJUnit4ClassRunner. class ) ContextConfiguration (classesBookConfiguration. class ) public class BookServiceTest { Autowired private BookService bookService; Test public void testBookService() { Book aBook bookService.findByTitle( Spring Boot in Action ); assertEquals( Craig Walls , aBook.getAuthor()); assertEquals( 40 , aBook.getPrice()); } } 如您所见BookServiceTest类使用RunWith JUnit注释和ContextConfiguration注释进行注释。 RunWith批注是启用Spring集成测试所必需的这就是我们SpringJUnit4ClassRunnner传递SpringJUnit4ClassRunnner类的原因而ContextConfiguration批注指定了如何加载应用程序上下文。 在此示例中将加载BookConfiguration类中定义的Spring应用程序上下文。 SpringJUnit4ClassRunner是一个功能强大的类它不仅可以加载应用程序上下文还可以将bean自动装配到测试中。 例如在这个测试类中我们需要一个BookService来测试其findByTitle()方法并且该bean是由SpringJUnit4ClassRunner类自动注入的因此我们只剩下编写代码 testBookService方法。 现在回到ContextConfiguration 即使它有助于加载应用程序上下文它也不会启用日志记录或从application.properties 加载其他属性 例如server.port属性在Spring启动时更改嵌入式tomcat服务器的端口是必需的应用。 要解决该问题可以使用SpringApplicaitonCongifguation批注代替ContextConfiguration 如下所示 RunWith (SpringJUnit4ClassRunner. class ) SpringApplicaitonCongifguation (classesBookConfiguration. class ) public class BookServiceTest { Autowired private BookService bookService; Test public void testBookService() { Book aBook bookService.findByTitle( Cloud Native Java ); assertEquals( Josh Long , aBook.getAuthor()); assertEquals( 40 , aBook.getPrice()); } } 这个行为与上一个示例相同但是SpringApplicationConfiguration还将启用Spring引导日志记录并加载在application.properties或application.yml文件中定义的其他属性。 这就是Spring Boot中ContextConfiguration和SpringApplicationConfiguration批注之间的区别 。 即使与SpringJUnit4ClassRunner一起使用并帮助加载应用程序上下文后来的版本还是有用的因为它还启用了日志记录和其他Spring Boot功能。 最好在为Spring Boot应用程序编写集成测试时使用SpringApplicationConfiguration 以使测试尽可能接近生产环境。 感谢您到目前为止阅读本文。 如果您喜欢我对SpringApplicationConfiguration和ContextConfiguration批注的解释请与您的朋友和同事分享。 如果您有任何疑问或反馈请留言。 翻译自: https://www.javacodegeeks.com/2019/02/difference-spring-boot-integration-test.html