spring Java 的项目每次跑自动化单元测试,反复加载很多次 spring 上下文。有办法只加载一次么?

2017-12-04 17:30:26 +08:00
 mikulch

请问一下各位大佬,java+springboot 的项目,跑自动化单元测试如何解决每个测试类,每次运行都会加载一次 spring 上下文的问题?(加载环境特别慢,无法忍受!)

8230 次点击
所在节点    问与答
10 条回复
Guozi1989
2017-12-04 17:31:03 +08:00
用 mock 的方式来做吧
mikulch
2017-12-04 17:34:18 +08:00
@Guozi1989 刚刚得到一个消息,说是测试类只要写了 @org.junit.runner.RunWith(SpringJUnit4ClassRunner.class)
这样的话默认上下文就只会加载一次,所以我这个担心似乎是多余的。。。。晕。也不知道真假。
gcli
2017-12-04 18:01:19 +08:00
单元测试还是应该用 mock 方式吧
mikulch
2017-12-04 18:38:23 +08:00
@gcli 那本身要测的 service 里面,本身就有其他 service 和 mapper 的依赖呢?这个测试就需要加载上下文了呀。
nl101531
2017-12-04 19:38:34 +08:00
@mikulch 来个大佬解释下,萌新也想知道。
18583826786
2017-12-04 20:04:00 +08:00
同问,看看后面有没有大佬解释
NeinChn
2017-12-04 20:08:54 +08:00
RunWith/ContextConfiguration 只能保证在一个 test suite(一个 class 内)内只初始化一次 Spring
但是基本没人会把单元测试写一个类里吧,基本都是一个 service 对应一个 test,一组 DAO 对应一个 test
坐等大佬解释,看看有没有什么更好的方法解决这种问题
mikulch
2017-12-04 22:16:07 +08:00
@NeinChn 感谢!这个事情我们现在很头痛。哎。
ekoeko
2017-12-05 16:40:50 +08:00
同问,刚开始写的时候看了好多别人写的测试,好像都是这么写的。
zonghua
2018-01-26 21:11:07 +08:00
编码都用组合的方式,所有的属性都可以模拟然后赋值。之前我写单元测试也像你一样用 @SpringBootTest 启动容器去测试,结果被几个同事笑了一整天。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/411891

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX