Junit报No Runnable Method错误:已添加@Test注解仍无法解决
解决JUnit提示“No Runnable methods”问题(已添加@Test注解仍报错)
我之前也踩过这个坑——明明给测试方法加了@Test注解,运行时还是弹出“No Runnable methods”的错误,结合你的代码和常见场景,这几个排查方向应该能帮到你:
1. 检查父类是否继承了TestCase
你的测试类继承了BaseUnitTest,如果这个父类间接或直接继承了JUnit 3的junit.framework.TestCase,那JUnit会默认切换到JUnit 3的运行模式——JUnit 3是通过方法名以test开头来识别测试方法的,完全忽略@Test注解。
解决办法:
- 如果不需要兼容JUnit 3,直接让
BaseUnitTest去掉对TestCase的继承; - 暂时兼容的话,把测试方法名改成
testSampleTest(以test开头),不过更推荐用JUnit 4+的注解方式。
2. 确认@Test注解的包路径
你代码里导入的org.junit.Test是JUnit 4的正确注解,但如果不小心导入了JUnit 5的org.junit.jupiter.api.Test,而你的项目依赖或运行环境还是JUnit 4,就会出现注解不被识别的情况。
解决办法:
仔细检查导入语句,确保是import org.junit.Test;,而不是其他版本的@Test。
3. 排查依赖冲突或配置错误
有时候项目里同时引入了JUnit 3、JUnit 4甚至JUnit 5的依赖,导致运行时注解被覆盖或无法加载。另外,如果构建工具(Maven/Gradle)里的JUnit依赖范围配置错误(比如设成了provided但运行时需要),也会出现这个问题。
Maven依赖示例(正确配置):
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13.2</version> <scope>test</scope> </dependency>
4. 重置IDE的运行配置
有些时候IDE的测试运行配置会出错,比如默认选了JUnit 3的运行器。你可以:
- 删除当前的测试运行配置;
- 右键点击测试方法或类,选择“Run 'SampleTest'”,让IDE自动生成正确的JUnit 4运行配置。
附上你的测试代码,方便对照排查:
package com.company.project.component; import org.junit.Test; import static org.junit.Assert.assertEquals; public class SampleTest extends BaseUnitTest { @Test public void sampleTest() { assertEquals(1, 1); } }
内容的提问来源于stack exchange,提问作者user9333933
相关产品推荐
相关产品推荐

