请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

service单元测试具体应该怎样实践

老师,您的视频中有提到service层的测试,但是视频中都是以打印输出的方式,然后进行肉眼判别。
我想问的是,实际生产中应该用断言去验证吧?
但是涉及到数据库中的数据,数据又可能经常会变动,我们如何保证测试的幂等性,大型项目的service,或者Controller层的单元测试最佳实践应该如何落地?
十分苦恼,忘老师指点

正在回答

1回答

同学你好:

    通过打印输出的方式是惯用,但是也是偷懒的方式,基本上企业级开发上面大多都会这样。如果真的想要去做理论上比较好的测试用例,可以使用内存数据库,可以参考这篇文章:https://jimolonely.github.io/2018/10/31/java/020-spring-boot-unit-test-with-h2db-in-memory/

    不过,大多数情况下,测试用例不是很重要,只是局限于理论而已。


    欢迎来 QQ 群随时交流、讨论,也非常感谢同学的支持!

1 回复 有任何疑惑可以回复我~
  • 提问者 慕粉152226940 #1
    谢谢老师的耐心解答,但是我内心还是有疑问那么多的测试类都要用肉眼看吗?还有devops中的自动化测试流程中的测试,还有自动可言吗?对于后接手代码的工程师,如何保证自己的代码没有动坏之前的逻辑,用肉眼从头再看一遍打印输出,那工作量岂不是翻倍增长了?
    回复 有任何疑惑可以回复我~ 2019-12-23 17:04:48
  • 张勤一 回复 提问者 慕粉152226940 #2
    同学你好,如果要写完备的测试用例,当然也是可以的,使用内存数据库,把表和数据都建立在内存中就可以了。不需要使用肉眼来看。
    回复 有任何疑惑可以回复我~ 2019-12-23 22:29:02
  • 提问者 慕粉152226940 回复 张勤一 #3
    谢谢老师,可能我的表述有问题,这么说吧,我最想知道的是如何使用断言的方式对service或者controller进行测试,尤其是设计数据库表操作的情况,比如说数据库记录经常变化,我们的断言如何保证幂等性;对数据库的操作是否真的成功了等等。
    当然我能力有限,但是个人觉得这样的测试应该做,但没有搜索到相关的内容,所以想问问老师有没有什么最佳实践或者是推荐的书籍等(您之前的答复我看了,使用h2可以提高测试执行的效率,其中也简单举例了对于数据库操作记录个数的断言,对于他的这种情况我也能想到)
    回复 有任何疑惑可以回复我~ 2019-12-23 23:31:42
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信