sie*_*kim 6 tdd spring-boot spring-boot-test
我英语不好。敬请谅解。
我知道。使用@SpringBootTest()Annotation来加载整个Bean显然被认为是一个“ Integration Test.”
然而,使用@SpringBootTest(classes=mybean.class)被认为是“单元测试”,因为它只运行某个(选定的)“”,Bean(Class)尽管它运行了一个 spring。
我还以为使用@ContextConfiguration的方式也是“ Unit Tests.”,因为我以为只有某些类可以被执行,比如@ContextConfusion(classes=myBean.class).
但这是我的错误。我收到了上次 StackOverflow 的答复。
Spring Boot 单元测试中的@SpringBootTest、@ContextConfiguration、@Import
我的最后一个问题--> using 是否@ContextConfiguration可以是“单元测试”$$$answer ---> 不,不能,它是一个在 Spring 中仅运行一个类的集成测试。通常,我们不会只使用 Spring 框架运行一个类。如果只想测试一个类(一个单元)的代码,那么在 spring 容器内运行它有什么好处?是的,在某些情况下,它可以是几个类,但不是数十个或数百个。如果你用 spring 运行一个类,那么在任何情况下,你都必须模拟它的所有依赖项,同样可以用 mockito 来完成......
所以我再问一次。
也是 ” @WebMvcTest” Integration Tests?我以为“ @WebMvcTest”就是“” Unit Test。但是,根据最后一个答案,@WebMvcTest也有春季运行。所以最后一个答案的逻辑是“ @WebMvcTest”也是“ Integration Test,”,但我还是不明白。
我很困惑。我只是在玩文字游戏吗?
@WebMvcTest“ Integration Test”吗?引用 Spring文档:
真正的单元测试通常运行得非常快,因为不需要设置运行时基础设施。强调真正的单元测试作为开发方法的一部分可以提高您的生产力。
Spring也是一种运行时基础设施。因此单元测试应该在不需要涉及其他框架(甚至Spring)的情况下运行。
然后它用整个部分来讨论集成测试,介绍了 Spring TestContext Framework它的描述:
Spring 框架为spring-test 模块中的集成测试提供了一流的支持。实际 JAR 文件的名称可能包括发行版本,也可能采用长 org.springframework.test 形式,具体取决于您从何处获取它(有关说明,请参阅依赖项管理部分)。该库包含该
org.springframework.test包,其中包含用于与 Spring 容器进行集成测试的有价值的类。
@ContextConfiguration来自Spring TestContext FrameworkSpring Boot 构建在其之上以提供@SpringBootTest等等@WebMvcTest。所以所有这些东西都是用于集成测试。
综上所述,如果一个测试需要启动 Spring 才能运行@WebMvcTest,那么它就不是单元测试,而是集成测试。
| 归档时间: |
|
| 查看次数: |
2092 次 |
| 最近记录: |