junit4和junit5的@Test注解的区别

文章讲述了在使用JUnit4时,因缺少SpringRunner而在测试类中获取RabbitTemplate时出现空指针异常。解决方案包括在JUnit4中使用@RunWith(SpringRunner.class)以及切换到JUnit5并移除@RunWith。SpringBoot项目通常与JUnit4配合,而SpringBoot2.2及以上版本需适应JUnit5集成。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在使用junit4的注解的时候,获取不到容器rabbitTemplate

报了个空指针异常:java.lang.NullPointerException: Cannot invoke "org.springframework.amqp.rabbit.core.RabbitTemplate.convertAndSend(String, String, Object)" because "this.rabbitTemplate" is null

解决方式一:在测试类上加上@Runwith(SpringRunner.class就可以解决了)

解决方式二:使用junit5的@Test注解

总结:

  1. JUnit 4:

    • 导入的 @Test 注解是 org.junit.Test
    • 需要在测试类上使用 @RunWith 注解来指定测试运行器,通常使用 @RunWith(SpringRunner.class) 来与 Spring 集成。
  2. JUnit 5:

    • 导入的 @Test 注解是 org.junit.jupiter.api.Test
    • 不需要使用 @RunWith 注解,JUnit 5 引入了自己的扩展模型,不再依赖于运行器。

因此,如果你使用的是 JUnit 4,则需要导入 org.junit.Test 注解并使用 @RunWith(SpringRunner.class),而如果你使用的是 JUnit 5,则应导入 org.junit.jupiter.api.Test 注解,不需要 @RunWith 注解。

在你的测试类中使用哪种注解取决于你的项目的测试框架和版本。如果你是在使用 Spring Boot,通常会使用 JUnit 4,并且需要在测试类上添加 @RunWith(SpringRunner.class) 注解。如果你想使用 JUnit 5,你需要适配 Spring Boot 2.2+ 版本,并相应地更新你的测试类和依赖。

### JUnit 5 中 `@Test` 注解不起作用的原因分析 在 JUnit 5 中遇到 `@Test` 注解不生效的情况,通常是因为缺少必要的依赖项或配置不当。为了使 `@Test` 正常工作,确保项目中包含了 JUnit Jupiter API Engine 的依赖。 对于 Maven 项目,在 pom.xml 文件中应加入如下依赖: ```xml <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-api</artifactId> <version>5.8.1</version> <scope>test</scope> </dependency> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-engine</artifactId> <version>5.8.1</version> <scope>test</scope> </dependency> ``` 此外,IDE 需要支持 JUnit 5 测试运行器。部分 IDE 可能默认只安装了旧版本的插件,需手动更新至最新版以兼容 JUnit 5[^3]。 编写测试案例时,请确认导入的是 org.junit.jupiter.api.Test 而不是 org.junit.Test: ```java import static org.junit.jupiter.api.Assertions.assertEquals; import org.junit.jupiter.api.Test; public class ExampleTests { @Test void simpleTest() { assertEquals(2, 1 + 1); } } ``` 当使用 Spring Boot 进行集成测试时,除了基本的 JUnit 5 设置外,还需引入 spring-boot-starter-test 并添加相应注解来加载应用上下文: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> ``` 以及在测试类上声明: ```java import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; @SpringBootTest class ApplicationTests { @Autowired private SomeService someService; @Test void contextLoads() { assertNotNull(someService); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值