Spring-test提供了在测试运行期间加载Spring上下文的注解。例如,有一个org.springframework.test.context.junit4.SpringJUnit4ClassRunner
junit runner类和org.springframework.test.context.ContextConfiguration
注解用于指定上下文加载。对于集成测试,上下文加载可能会很长,在调试期间,需要运行相同的测试十几次,直到“丢失”所有错误。有没有方法在不多次加载上下文的情况下做到这一点?例如,我完成了上下文加载的调试,然后运行该上下文并开始在Intellij Idea中运行测试?这在Intellij Idea中是可能的吗?
2条答案
按热度按时间1bqhqjot1#
很久以前没有答案,这是奇怪的,这是非常重要的知道,因为它可以保存大量的资源和时间。
如果您有一个带有注解的类
并且你将它扩展到你所有的Test类上下文将只被加载一次
此类中所有测试将使用相同上下文扩展此类所有类也将重用相同上下文
ssm49v7z2#
可能不是最干净的解决方案,但这个效果很好。
1.在测试中创建一个Spring-Boot应用程序,它或多或少地代表了主应用程序(在配置方面):
1.创建另一个 thin Sping Boot 应用程序,在其中将上述应用程序创建并发布为Bean:
1.最后,添加正常的Sping Boot 测试:
使用此方法时,有几点需要注意/改进:
1.它要求团队在代码库维护方面有良好的纪律;在哪里放置集成测试、Spring配置、bean等。您很容易得到一个包含不需要的bean的混乱的上下文。
1.如何处理环境、配置文件和属性并不简单。
1.访问在主应用程序上下文中创建的bean是一个挑战。(例如,访问JDBC数据源bean。)
1.如何处理共享资源(例如端口)是一个(不太难)的问题。
1.对Gradle Continues Build的支持需要在构建脚本中进行一些配置。
我已经创建了一个示例项目here作为概念验证。
(The事实上,没有人处理这个问题,这是令人难以置信的。期待官方和/或更好的解决方案)