Spring boot @WebMvcTest,@DataJpaTest我想知道它是否';s";单元测试“;或;集成测试。”;
我不擅长英语。请理解 我知道。使用Spring boot @WebMvcTest,@DataJpaTest我想知道它是否';s";单元测试“;或;集成测试。”;,spring-boot,tdd,spring-boot-test,Spring Boot,Tdd,Spring Boot Test,我不擅长英语。请理解 我知道。使用@springbootest()注释加载整个Bean显然被认为是一种“集成测试。” 然而,@SpringBootTest(classes=mybean.class)的使用被认为是“单元测试”,因为它只运行某个(选定的)Bean(class),尽管它运行的是spring 我还认为使用@ContextConfiguration的方法也是“单元测试。”,因为我认为只能执行某些类,比如@ContextConfiguration(classes=myBean.class)
@springbootest()
注释加载整个Bean显然被认为是一种“集成测试。
”
然而,@SpringBootTest(classes=mybean.class)
的使用被认为是“单元测试”,因为它只运行某个(选定的)Bean(class)
,尽管它运行的是spring
我还认为使用@ContextConfiguration的方法也是“单元测试。
”,因为我认为只能执行某些类,比如@ContextConfiguration(classes=myBean.class)
但这是我的错,我收到了上一次的答复
我的最后一个问题-->
使用@ContextConfiguration
是否可以作为“单元测试”
$$$答案-->
不,它不能,它是一个集成测试,在spring中只运行一个类。
通常,我们不会在Spring框架中只运行一个类。如果您只想测试一个类(一个单元)的代码,那么在Spring容器中运行它有什么好处?是的,在某些情况下,它可以是几个类,而不是几十个或几百个。
如果您使用spring运行一个类,那么在任何情况下,您都必须模拟它的所有依赖项,同样可以使用mockito进行模拟
所以我再问一次
“@WebMvcTest
”也是“集成测试
”吗?我认为“@WebMvcTest
”是“单元测试
”但是,根据上一个答案,@WebMvcTest
也有spring运行。所以最后一个答案的逻辑是“@WebMvcTest
”也是“集成测试
”,“但我还是不明白
我很困惑。我只是在玩弄文字吗
@WebMvcTest
是否也是一个“集成测试”
然后通过介绍
Spring-TestContext-Framework
来讨论集成测试,它描述为:
Spring框架为集成提供了一流的支持
在弹簧测试模块中进行测试。实际JAR文件的名称
可能包括发布版本,也可能是长期版本
org.springframework.test表单,具体取决于您从何处获得它(请参见
有关依赖关系管理的部分(有关说明)。这个图书馆
包括org.springframework.test
包,其中包含有价值的
使用Spring容器进行集成测试的类
@ContextConfiguration
来自SpringTestContext框架
,而SpringBoot在其上构建,以提供@SpringBootTest
和@WebMvcTest
等。因此,所有这些内容都是用于集成测试的
总之,如果一个测试需要启动Spring才能运行,比如
@WebMvcTest
,那么它不是一个单元测试,而是一个集成测试 首先,一些定义取自:
单元测试是一种软件测试级别,其中测试软件的各个单元/组件。目的是验证软件的每个单元是否按设计执行
集成测试是一种软件测试级别,其中单个单元作为一个组进行组合和测试。此级别测试的目的是暴露集成单元之间交互中的故障
为了回答您的问题,三个注释和都涉及到加载Spring组件的子集。因此,它们与集成测试相关