You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JMH集成JUnit执行测试时报org.junit包不存在编译错误如何解决

错误根本原因

编译报错的核心是main源码目录下的类无法访问测试作用域的JUnit依赖,90%以上的这类场景都是你在Maven/Gradle配置中为JUnit依赖指定了test作用域,而你的MyBenchmark类存放在src/main/java路径下,test作用域的依赖仅对src/test/java路径下的代码可见,main目录代码编译时自然找不到JUnit相关类。


可选解决方案

方案1:调整类存放位置(推荐)

  • 将MyBenchmark类从src/main/java/com/example/移动到src/test/java/com/example/路径下
  • 无需修改任何依赖配置,测试作用域的JUnit对test目录代码天然可见,重新构建即可正常编译

方案2:修改JUnit依赖作用域

如果确实需要把JMH基准测试类放在main目录下,直接移除JUnit的test作用域限制即可:

  • Maven项目修改pom.xml中JUnit依赖配置,删除<scope>test</scope>行:
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.13.1</version>
    <!-- 删除下面这行配置 -->
    <!-- <scope>test</scope> -->
</dependency>
  • Gradle项目修改build.gradle中JUnit的依赖声明,把testImplementation 'junit:junit:4.13.1'改为implementation 'junit:junit:4.13.1'

JMH基准测试优化建议

你当前写的benchmark1方法存在死代码消除问题:JVM会自动判定sum变量没有被使用,直接删除这段计算逻辑,最终得到的测试结果完全不准确,建议用Blackhole消费计算结果:

@Benchmark
public void benchmark1 (Blackhole blackhole) {
    int a = 5;
    int b = 10;
    int sum = a + b;
    blackhole.consume(sum);
}

内容的提问来源于stack exchange,提问作者pradeep3009

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 14:24:03