Spring Boot APP - 单元测试[重复]
Posted
技术标签:
【中文标题】Spring Boot APP - 单元测试[重复]【英文标题】:Spring Boot APP - Unit Testing [duplicate] 【发布时间】:2017-02-01 12:16:55 【问题描述】:我有一个关于单元测试的基本问题。我相信当您进行单元测试时,您基本上是在测试一个代码单元,而在 java 的情况下,我们可以将每个方法视为一个代码单元。我相信当我们对一个方法进行单元测试时,必须模拟对另一个方法的所有调用才能测试该方法的功能。下面是一个例子。如果我的理解正确,请告诉我。
我有 A、B 和 C 类
A 类有方法 1
B类有方法1和2
C 类有方法 1 进行外部服务调用。
Class A.method 1-> Class B.method1 -> ClassB.method2 -> Class C.method 1 -> 外部soap服务。
在上述场景中,当我对 Class A 方法 1 进行单元测试时,我应该模拟 Class B.method1 响应吗?同样,当我对 Class B.method1 进行单元测试时,是否应该模拟 Class B.method 2?我相信这也适用于随后被调用的其他方法。
【问题讨论】:
我看到你的问题被否决了。可能是因为它与 Spring Boot 并没有真正的关系,而是更多的一般单元测试问题,并且人们认为它具有误导性? @TonyLang 有人在过去 10 分钟内对我的大约 10 条帖子投了反对票。他们甚至对我的问题的答案投了反对票。 @PaulSweatte ,您发布的链接似乎在谈论集成测试。 【参考方案1】:"当我对 Class A 方法 1 进行单元测试时,我应该模拟 Class B.method1"
我想是的,因为您将 A 类作为“单元”进行测试
"当我对 Class B.method1 进行单元测试时,应该模拟 Class B.method 2"
你可以,但也许你不想。
如果 B.method2 是私有的,它是逻辑 B.method1 的一部分
如果 B.method2 是公共的,那么 B.method1 调用它的事实可能表明该方法可以分离到另一个类中,因为 method1 和 method2 可能不在抽象级别。
如果您确实想在测试 B.method1 时模拟 B.method2,您可以使用spy。
【讨论】:
感谢@Tony Lang! 这是否意味着我的课程是一个单元而不是我的方法? @PunterVickyWell,我曾经将每个方法都视为一个单元,并使用反射来测试每个私有方法。不过结果并不好:)以上是关于Spring Boot APP - 单元测试[重复]的主要内容,如果未能解决你的问题,请参考以下文章
spring boot单元测试spring context重复加载问题
Spring Boot 单元测试忽略 logging.level
使用邮递员返回错误请求,但未在单元测试 Spring Boot 中返回
spring boot 学习之二(spring boot单元测试)