首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否应该在Spring中使用SpringRunner和Junit 5

是否应该在Spring中使用SpringRunner和Junit 5
EN

Stack Overflow用户
提问于 2020-02-24 03:02:04
回答 3查看 6.4K关注 0票数 10

我对SpringRunner类感到困惑。从Stackoverflow和google了解到SpringRunnerSpringJunit4ClassRunner是一样的。

代码语言:javascript
运行
复制
@RunWith(SpringRunner.class)

我对这门课的理解是:

  • 顾名思义-它是一个“runner”(它将运行Junit测试)
  • 此类在使用注释@RunWith执行单元测试时使用。
  • 此注释有助于加载spring应用程序上下文,并有助于“自动”依赖关系。
  • 只有当我们需要spring上下文bean依赖关系时,才应该使用这个类。
  • 因此,应该谨慎使用该类,否则在测试期间我们将不必要地加载spring上下文。
  • 这个类帮助Junit和Spring一起协作。

使用Junit5和spring引导,这个类不再需要了吗?

如果是,那么我们应该在spring引导和Junit5环境中使用什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-02-24 05:26:00

来自参考文档

如果您正在使用JUnit 4,请不要忘记在测试中添加@RunWith(SpringRunner.class),否则注释将被忽略。如果您使用的是JUnit 5,则不需要将等效的@ExtendWith(SpringExtension.class)添加为@SpringBootTest和其他@…已经用它对测试注释进行了注释。

票数 12
EN

Stack Overflow用户

发布于 2020-02-24 09:33:37

使用Junit5和spring引导,这个类不再需要了吗?

注释@RunWith(SpringRunner.class)不再是必需的,可以删除它。

此外,如果只使用Junit5,则建议排除Junit4:

代码语言:javascript
运行
复制
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-test</artifactId>
   <scope>test</scope>
   <exclusions>
      <exclusion>
         <groupId>org.junit.vintage</groupId>
         <artifactId>junit-vintage-engine</artifactId>
      </exclusion>
   </exclusions>
</dependency>
票数 5
EN

Stack Overflow用户

发布于 2021-01-25 09:46:08

@RunWith是一个JUnit4 API。

在JUnit 5中,使用@ExtendedWith代替。Spring核心为它提供了一个新的SpringExtension。还有一些更灵活的注释,例如。SpringJunitConfig

代码语言:javascript
运行
复制
@SpringJunitConfig(classes= config classes)
public class ASpringTest
{}

有关SpringJunitConfig的用法,请查看这里中的更多示例。

在最新的SpringBoot2.4中,JUnit 5是默认的测试运行程序,使用@SpringBootTest就足够了,Spring还为Spring提供了测试切片功能,请查看我的示例这里

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60369022

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档