Eclipse中运行JUnit报错“junit5测试运行器未找到测试”如何解决?
Spring Boot单元测试提示「NO test found with test runner 'junit5'」解决方案
问题根因
该错误由JUnit4注解与JUnit5(Jupiter)运行环境混用导致:
@RunWith是JUnit4专属的运行器配置注解,JUnit5使用@ExtendWith作为扩展机制- 你当前测试框架默认使用JUnit5作为运行器,无法识别JUnit4的
@Test、@RunWith注解,因此找不到可用测试用例
具体解决步骤
替换类注解配置
删掉测试类上的@RunWith(MockitoJUnitRunner.class),替换为Mockito对应JUnit5的扩展注解:@ExtendWith(MockitoExtension.class)
注:该类全路径为org.mockito.junit.jupiter.MockitoExtension修正@Test注解导入
将原有JUnit4的Test导入import org.junit.Test;替换为JUnit5的Test注解:import org.junit.jupiter.api.Test;调整后的测试类示例:
// 若不需要启动Spring上下文可删掉@SpringBootTest,仅保留@ExtendWith即可提升测试运行速度 @ExtendWith(MockitoExtension.class) public class CreateUserServiceTest { @Mock private UserRepository userRepository; @InjectMocks private CreateUserService createUserService; @Test public void whenSaveUser_shouldReturnUser() { User user = new User(); user.setName("Test Name"); when(userRepository.save(ArgumentMatchers.any(User.class))).thenReturn(user); User created = createUserService.createNewUser(user); assertThat(created.getName()).isSameAs(user.getName()); verify(userRepository).save(user); } }
依赖检查(Maven为例)
确保pom.xml中已引入JUnit5和对应Mockito扩展依赖,避免类找不到问题:
<dependencies> <!-- Spring Boot Test starter 默认包含JUnit5依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!-- Mockito JUnit5 扩展 --> <dependency> <groupId>org.mockito</groupId> <artifactId>mockito-junit-jupiter</artifactId> <scope>test</scope> </dependency> </dependencies>
优化建议
你当前的测试仅涉及Service层逻辑,所有依赖都已通过@Mock模拟,无需加载Spring上下文,因此可以删掉类上的@SpringBootTest注解,大幅降低测试启动耗时。
内容的提问来源于stack exchange,提问作者Gulam Samdani
相关产品推荐
相关产品推荐

