首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Spring Boot 做单元测试,真心强悍!

Spring Boot提供了一个 @SpringBootTest 注解,用在单元测试类上以启用支持Spring Boot特性的单元测试,如果使用的是JUnit 4,那么测试类上还需要额外的@RunWith...(SpringRunner. class)注解,然后在测试类方法上添加 @Test 注解即可,每一个 @Test 注解修饰的方法就是一个单元测试方法。...如果使用的 @SpringBootTest 注解不带任何参数,则默认为 Mock 环境。...真实环境测试 在 @SpringBootTest 注解中指定基于随机端口的真实Web环境,然后在类成员变量或者方法参数上注入 TestRestTemplate 实例,就可以完成对 Spring MVC接口的真实环境测试...@MockBean、@SpyBean 注解既可作用于 Mock 环境,也可作用于真实环境,它只是用来模拟、替换环境中指定的 Bean 而已,但不能用于模拟在应用上下文刷新期间 Bean 的行为,因为在执行测试用例时应用上下文已经刷新完成了

73830

SpringBoot测试Service或者Dao层

使用Spring Boot进行单元测试时,发现使用@Autowired注解的类无法自动注入,当使用这个类的实例的时候,报出NullPointerException,即空指针异常。...我们知道,在Spring中,类的实例是交给容器管理的,而在测试类中,容器因为没有相应的上下文环境,是没有办法找到相应的类并进行相应的初始化/实例化操作,因此也就没有在测试类中成功注入类的实例,在试图使用类的实例的情况下也就会报空指针异常的错误...当使用@RunWith注解对JUnit测试进行注解时,将对测试的生命周期和测试的运行方式进行一些更改。 比如@RunWith(JUnit4.class)就是指用JUnit4来运行。...一般情况下想创建spring容器的话,需要通过web.xml配置classloder,但如果注解了@RunWith注解的话,就可以直接使用spring容器,直接使用@Test注解,不用启动spring容器...@SpringBootTest注解 @SpringBootTest注解是一个Spring Boot提供的注解,通过这个注解可以使JUnit单元测试跑在Spring Boot的运行环境中。

6.7K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    @Spy、@SpyBean、@MockBean、@Mock、@RunWith、@ExtendWith对比

    前言 在写单元测试中经常会用到Mockito,但是这些类似的注解非常混乱,今天总结一下相关的注解,说明其中的含义和实现例子。...需要注意的是,我们应该只在测试类中使用它。与mock()方法不同的是,我们需要启用Mockito注解才能使用该注解。...如果@Spy注解的组件包含其他依赖项,我们可以在初始化时声明它们。如果在初始化期间未提供它们,系统将使用零参数构造函数(如果可用)。...在@SpyBean测试的情况下,我们必须使用@Autowired注释来注入依赖组件。否则,在运行时,Spring Boot 会创建一个新实例。...,例如集成Spring,如果只是简单的单元测试可以配置不带Bean的,这里面最好区分的还是@RunWith和@ExtendWith,一个是JUnit4一个是JUnit5。

    1.3K10

    @Spy、@SpyBean、@MockBean、@Mock、@RunWith、@ExtendWith对比

    前言在写单元测试中经常会用到Mockito,但是这些类似的注解非常混乱,今天总结一下相关的注解,说明其中的含义和实现例子。...需要注意的是,我们应该只在测试类中使用它。与mock()方法不同的是,我们需要启用Mockito注解才能使用该注解。...如果@Spy注解的组件包含其他依赖项,我们可以在初始化时声明它们。如果在初始化期间未提供它们,系统将使用零参数构造函数(如果可用)。...在@SpyBean测试的情况下,我们必须使用@Autowired注释来注入依赖组件。否则,在运行时,Spring Boot 会创建一个新实例。...,例如集成Spring,如果只是简单的单元测试可以配置不带Bean的,这里面最好区分的还是@RunWith和@ExtendWith,一个是JUnit4一个是JUnit5。

    1.1K91

    Spring Boot的测试工具和技巧(一)

    :在整个测试类之前执行@AfterClass:在整个测试类之后执行1.2 测试代码示例以下是一个使用JUnit编写的简单的单元测试:import org.junit.jupiter.api.Test;import...集成测试集成测试是一种测试方法,用于测试多个应用程序组件之间的交互。在Spring Boot中,可以使用Spring的@SpringBootTest注解来编写集成测试。...2.1 @SpringBootTest注解@SpringBootTest注解是Spring Boot的一个核心注解,用于启动Spring应用程序上下文以进行集成测试。...在test方法中,我们注入了MyService,并调用它的方法进行测试。注意,我们使用了@SpringBootTest注解的webEnvironment属性来指定测试应用程序的Web环境。...,提供了更简洁的测试代码Testcontainers:一个Java库,用于在测试期间启动和管理容器化应用程序Rest Assured:一个Java库,用于编写基于RESTful API的测试3.2 端到端测试代码示例以下是一个使用

    92420

    SpringBoot(四)SpringBoot中lombok使用

    lombok的注解介绍 @NonNull : 让你不在担忧并且爱上NullPointerException @CleanUp : 自动资源管理:不用再在finally中添加资源的close方法...set/get方法,toString方法,equals方法,hashCode方法,不带参数的构造方法 @Value : 用于注解final类 @Builder : 产生复杂的构建器api类...这里重复了大量的 @Getter 和 @Setter 注解。 如果你只是需要在Class中仅暴露几个字段,那么使用它们非常方便,但如果您需要为所有字段生成访问器,则会变得烦人又无聊。...为了使代码更加简洁, Lombok永续我们在类级上使用这些注解。如果这些注解放在类名之上, 那么lombok会自动为我们生成所有字段的访问方法。....也就是@Data 我们在定义类的时候 只需要加一个 @Data 注解,其他的注解我们都不需要在添加就可以达到前面所说的所有功能。

    1.3K90

    别再用main方法测试了,太Low!这才是专业的SpringBoot项目测试方法!

    JUnit测试也就是所谓的白盒测试,在程序员知道程序内部逻辑的基础上进行的测试,使用JUnit能让我们快速地完成单元测试。...常用注解 在使用Spring Boot Test之前,我们先来了解下它常用的注解,这对使用它很有帮助,具体参考下表即可!...我们先来一个最简单的单元测试,使用@SpringBootTest注解启用单元测试,使用@Test指定测试方法,使用Assertions类的方法来断言结果是否符合预期,具体代码如下。...执行完成后我们在IDEA的执行窗口中就可以看到方法测试通过了,由于使用@SpringBootTest启用了Spring Boot环境,日志中会输出Spring Boot的banner。...生命周期测试 我们还可以通过JUnit 5的生命周期注解来执行测试方法,比如在@BeforeAll注解指定的方法中做全局初始化,在@AfterAll注解指定的方法中做资源的销毁,具体代码如下。

    1.5K20

    SpringBoot对单元测试支持、常用单元测试功能使用实例

    常用单元测试注解 以 Junit 为例,在单元测试中会常用到一些注解,比如 Spring Boot 提供的@SpringBootTest @MockBean、@SpyBean 、@WebMvcTest@...该测试项目中引入了 spring-boot-starter-test 依赖,默认情况下此依赖使用的单元测试类库为 J∪nit4,此时@SpringBootTest 注解需要配合@RunWith(SpringRunner.class...因此,需要根据具体使用的版本来确定是否需要@ExtendWith(SpringExtension.class)注解,否则可能会出现注解无效的情况虽然单元测试类的代码与 JUnit4 基本相同,但本质上还是有区别的...原因很简单,从 JUnit4 升级到 JUnit5 时,在 testInsert 方法 上的@Test 注解变了。...在以上单元测试中,@RunWith(SpringRunner. class )和@SpringBootTest 的作用我们已经知道,另外的@AutoConfigureMockMvc 注解提供了自动配置

    1.8K30

    Spring Boot - 用JUnit 5构建完美的Spring Boot测试套件

    4 vs JUnit 5 以下是JUnit 4和JUnit 5注解之间的一些主要区别 功能/特性 JUnit 4注解 JUnit 5注解 测试方法声明 @Test @Test 测试类声明 @RunWith...你可以根据项目的需要选择适合的JUnit版本。 ---- Junit5 常用注解 @SpringBootTest: 用于指定测试类启用Spring Boot Test,默认会提供Mock环境。...@BeforeAll: 在测试类的所有测试方法前执行一次,可用于全局初始化。 @AfterAll: 在测试类的所有测试方法后执行一次,可用于全局销毁资源。...@BeforeEach: 在测试类的每个测试方法前都执行一次。 @AfterEach: 在测试类的每个测试方法后都执行一次。 @Disabled: 禁用测试方法。...---- 栗子 以下是上述注解的使用方法示例以及相应的Java代码: @SpringBootTest:用于指定Spring Boot测试。

    6.1K31

    使用Spring Boot进行单元测试

    编写好的单元测试可以被看成一个很难掌握的艺术。但好消息是支持单元测试的机制很容易学习。 本文给你提供在Spring Boot 应用程序中编写好的单元测试的机制,并且深入技术细节。...进行集成测试 如果你喜欢看视频教程,可以看看Philip的课程:测试Spring Boot应用程序课程 依赖项 本文中,为了进行单元测试,我们会使用JUnit Jupiter(Junit 5),Mockito...注意,在Spring 5 之前,我们需要在构造函数上增加@Autowired注解,以便让Spring找到这个构造函数。 还要注意的是,现在UserRepository属性是final修饰的。...(NullPointerException)。...想看更多,文档 通过Mockito的@Mock注解模拟对象 创建一个模拟对象的第二种方式是使用Mockito的@Mock注解结合 JUnit Jupiter的MockitoExtension一起使用:

    2.4K30

    一文搞懂Spring5 Mock测试

    在没有测试用例的情况下,一旦项目团队成员中有人离开团队,走之前也没有留下接口文档,那么新加入的并接手的员工维护起来就会比较蛋疼了,一个个接口的入参还得去页面上通过调试模式在Network界面一个一个地去找...但通过这件事情也让我意识到开发的接口有完整的测试用例的好处。...如果你已经把你的测试类升级到Junit5,那么你可以按下面这种方式在依赖中排除对Junit4的支持。...标注的测试类默认使用mock Web环境 默认情况下@SpringBootTest不会启动一个服务器,你可以使用@SpringBootTest注解中的webEnvironment属性自定义你的测试类如何启动...,但并不提供任何Web环境 注意:如果你的测试类上加上了@Transactional注解,默认情况下它会在每一个测试方法执行完之后回滚事务。

    2.8K20

    Spring Boot的测试框架(二)

    端到端测试 端到端测试是指对应用程序的整个系统进行测试,从用户的角度出发,模拟用户使用系统的过程。Spring Boot提供了多种端到端测试工具,使得开发者可以轻松地编写端到端测试。 1....编写测试类 创建一个名为MyTest的测试类: import io.github.bonigarcia.wdm.WebDriverManager; import org.junit.jupiter.api.AfterAll..., message); } } 这个测试类使用了Spring的@SpringBootTest注解来启动Spring应用程序上下文。...在test方法中,我们使用了ChromeDriver来打开Web应用程序,并在输入框中输入名字并点击提交按钮。最后,我们使用assertEquals方法来断言返回的消息是否正确。...注意,在这个测试类中,我们需要在@SpringBootTest注解中设置webEnvironment属性为DEFINED_PORT,以便在测试期间使用与应用程序相同的端口启动应用程序。

    51020

    Spring学习笔记(二十八)——springboot单元测试&JUnit5

    * JUnit Jupiter: JUnit Jupiter提供了JUnit5的新的编程模型,是JUnit5新特性的核心。内部 包含了一个测试引擎,用于在Junit Platform上运行。...异常断言 在JUnit4时期,想要测试方法的异常情况时,需要用@Rule注解的ExpectedException变量还是比较麻烦的。...:复合注解,替代了上边的两行代码 @SpringBootTest @DisplayName("junit5功能测试类") public class Junit5Test { @Autowired...嵌套测试 JUnit 5 可以通过 Java 中的内部类和@Nested 注解实现嵌套测试,从而可以更好的把相关的测试方法组织在一起。...迁移指南 在Junit4d进行迁移到Junit5的时候需要注意如下的变化: * 注解在 org.junit.jupiter.api 包中,断言在 org.junit.jupiter.api.Assertions

    1.3K10

    Springboot+Junit5微服务单元测试编写实践

    Springboot+Junit5微服务单元测试编写实践 现在写单元测试的重要性不言而喻,下边说明一下Junit5测试的会用到的主要注解和方法。PS:常用开发工具都可以自动生成Junit测试类。...单元测试命名 可参考【翻译】7种流行的单元测试命名约定 在项目种我选择的是should...when的写法,但需注意方法命名时不要过长,过长反而导致难于阅读和理解 2....常用注解 类注解 @SpringbootTest 加在类上,会启动整个环境;做集成测试;由于controller层逻辑少,一般用在controller层;比较慢 @ExtendWith(SpringExtension.class...@MockBean创建的对象默认会加入Spring的上下文中,如果Spring的上下文存在则替换;@MockBean和@SpyBean区别同@Mock和@Spy的区别 方法注解 Test 同Junit4...可以在做数据库的单元测试时不使用@SpringBootTest注解启动整个工程 接入层的单元测试 @WebMvcTest 同样用来做MVC层的单元测试,只注入MVC层相关的Bean

    1.6K00

    SpringBoot - 应用程序测试方案

    而更常见的做法是在 @SpringBootTest 注解中指定该 Bootstrap 类,并设置测试的 Web 环境,如下代码所示。...在 Spring Boot 中,@SpringBootTest 注解主要用于测试基于自动配置的 ApplicationContext,它允许我们设置测试上下文中的 Servlet 环境。...,我们还看到一个由 JUnit 框架提供的 @RunWith 注解,它用于设置测试运行器。...除了在配置文件中设置属性,我们也可以使用 @SpringBootTest 注解指定用于测试的属性值,示例代码如下: @RunWith(SpringRunner.class) @SpringBootTest...当然,如果你希望在测试用例中直接注入真实的CustomerTicketRepository,这时就可以使用@SpringBootTest 注解中的 SpringBootTest.WebEnvironment.RANDOM_PORT

    1.5K30

    Spring Boot 中的集成测试

    然后,@TestPropertySource注解帮助我们配置在测试用例中使用的配置文件地址。需要注意的是,这个注解配置的配置文件会覆盖存在的application.properties配置文件。...理想情况下,我们应该可以在没有连接完整持久层代码的情况下,编写和测试Service层代码。...当我们需要在JUnit测试类中使用Spring Boot 测试的特性的时候,这个注解就有用了。...在大部分情况下,@WebMvcTest只会启动单个Controller类。我们可以和@MockBean注解一起使用来提供任何需要依赖的模拟实现。...你可以读到关于这些注解的更多文章,并继续优化集成测试,优化Spring集成测试。 10 结论 在本文中,我们深入探讨了在Spring Boot中进行测试,并展示了怎么更有效的编写测试用例。

    4.2K30
    领券