Idea ——使用Junit+Coverage(覆盖率)报错

摘要

之前用idea写junit 查看代码覆盖率的时候遇到的问题. 
java.lang.reflect.InvocationTargetException…FATAL ERROR in native method: processing of -javaagent failed 
看完之后一脸蒙蔽。。。。好在问题解决了,记录一下解决方法。

遇到问题详细

stack如下

java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at sun.instrument.InstrumentationImpl.loadClassAndStartAgent(InstrumentationImpl.java:386)
    at sun.instrument.InstrumentationImpl.loadClassAndCallPremain(InstrumentationImpl.java:401)
Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.intellij.rt.coverage.main.CoveragePremain.premain(CoveragePremain.java:66)
    ... 6 more
Caused by: java.lang.ArrayIndexOutOfBoundsException: 1
    at com.intellij.rt.coverage.instrumentation.Instrumentator.premain(Instrumentator.java:64)
    ... 11 more
FATAL ERROR in native method: processing of -javaagent failed

Process finished with exit code 1
Exception in thread "main" 

解决

  1. 先看一下你自己idea.exe 的位置,这是我的E:\IntelliJ IDEA\IntelliJ IDEA 2016.1.1\bin 
    1
  2. 找到idea.exe.vmoptions这个文件 
    2
  3. 记事本打开最后加入一行-Djava.io.tmpdir=F:\Temp ,这里要注意 F:\Temp 是随意写的目录,但一定要保证它存在。 
    3
  4. 重新打卡IDEA 在运行就可以啦。 
  5. 有的idea工具用的idea64.exe,所以修改的文件是idea64.exe.vmoptions

参考:
https://blog.csdn.net/Demon2015/article/details/76218029

<think>嗯,用户问的是如何在IntelliJ IDEA中配置和运行JUnit测试。首先,我需要回忆一下自己之前使用IntelliJ的经验,或者查一下相关的文档。记得IntelliJ有内置的JUnit支持,可能不需要手动下载库,但用户可能需要配置一些东西。 首先,用户可能需要创建一个Java项目,或者在已有项目中添加测试。然后,需要确保项目中有JUnit的依赖。根据引用[1]和[3],IntelliJ的新版本可能已经集成了JUnit,所以用户可能不需要手动下载。但如果是旧版本,可能需要通过Maven或Gradle来添加依赖,或者手动导入库。 接下来,测试目录的结构可能是个问题。通常,测试代码放在src/test/java下,而主代码在src/main/java。引用[4]提到在.src外部新建.test文件夹,但这样可能导致IDE无法识别测试目录。这时候需要将.test标记为测试源根,这样IntelliJ才能识别其中的测试类。 然后,生成测试类的方法。用户可以使用Alt+Insert快捷键,或者右键点击类名选择生成测试。这里可能需要安装JUnit Generator插件,如引用[3]所述,或者使用内置的生成方式。生成测试方法时,可能需要选择JUnit版本,比如JUnit 4或5,这会影响导入的注解和断言方法。 编写测试用例时,要使用@Test注解,并编写具体的测试逻辑。引用[1]提到IntelliJ对JUnit的良好支持,包括运行测试的按钮和视图。运行测试时,可能会有问题,比如类名不正确,如引用[2]中的问题,测试类的包路径是否正确,或者测试类是否在正确的目录下。 另外,配置运行/调试配置可能也是需要的,特别是当用户有特殊需求时,比如使用特定的JVM参数或环境变量。不过对于基本使用,直接右键运行测试方法或类即可。 可能还需要处理常见问题,比如无法运行测试的情况。检查测试类是否在测试源根目录下,是否有正确的注解,依赖是否正确,以及项目结构是否配置正确。引用[2]提到类名的问题,比如包名是否正确,是否有拼写错误。 总结步骤的话,应该包括:创建项目并配置测试目录、添加JUnit依赖、生成测试类、编写测试方法、运行测试以及处理常见问题。需要确保每个步骤都清晰,并且引用相关的帮助文档或用户提到的引用来源,比如如何设置测试目录,如何生成测试方法等。 可能用户遇到的问题还包括依赖冲突,或者JUnit版本不兼容,比如JUnit 4和5的差异。需要指出如何选择正确的版本,并在生成测试时注意导入正确的包。此外,插件如JUnit Generator的使用可能简化测试生成,但需要指导用户如何安装和配置,如引用[3]所述。 最后,用户可能需要知道如何查看测试结果,使用覆盖率工具,或者集成到构建工具中。但根据问题,主要是配置和运行,所以重点放在基础设置和常见问题的解决上。</think>在IntelliJ IDEA使用JUnit进行单元测试的配置与运行步骤如下: ### 一、基础环境配置 1. **创建测试目录** - 右击项目根目录 → 新建`src/test/java`文件夹 → 将其标记为**测试源根**(右击文件夹 → "Mark Directory as" → "Test Sources Root")[^4] - 确保测试目录结构与主代码目录结构保持一致,例如主类路径为`src/main/java/com/example`,则测试路径应为`src/test/java/com/example` 2. **添加JUnit依赖** - 对于Maven项目:在`pom.xml`中添加依赖(以JUnit 5为例): ```xml <dependency> <groupId>org.junit.jupiter</groupId>     <artifactId>junit-jupiter-api</artifactId>     <version>5.8.2</version>     <scope>test</scope> </dependency> ``` - 非Maven项目:通过菜单`File → Project Structure → Libraries`手动添加JUnit库[^3] ### 二、生成测试类 1. **自动生成测试方法** - 在需要测试的类中按`Alt+Insert` → 选择"Test..." → 勾选要测试的方法 → 选择JUnit版本(推荐JUnit 5) - 生成的测试类默认保存在`src/test/java`对应包路径下 2. **手动编写测试** ```java import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.*; public class CalculatorTest { @Test void testAdd() { Calculator calc = new Calculator(); assertEquals(5, calc.add(2, 3)); } } ``` ### 三、运行测试 1. **单测试方法运行** - 在测试方法左侧点击绿色箭头 → 选择"Run testAdd()" - 快捷键`Ctrl+Shift+F10`(当前光标所在方法) 2. **批量运行** - 右击测试类 → "Run CalculatorTest" - 通过工具栏的`Run/Debug Configurations`选择测试范围(如整个模块或包) ### 四、常见问题解决 | 问题现象 | 解决方案 | |---------|---------| | "No tests found"错误 | 检查测试类是否在标记为Test Sources Root的目录下 | | 无法识别`@Test`注解 | 确认JUnit依赖已正确添加,且导入了`org.junit.jupiter.api.Test`包[^2] | | 测试结果显示异常 | 在`Run`面板查看详细堆栈信息,检查断言逻辑是否正确 | ### 五、进阶功能 1. **参数化测试** 使用`@ParameterizedTest`和`@ValueSource`实现多数据输入测试 2. **覆盖率分析** 运行测试后点击`Run → Show Code Coverage Data`查看代码覆盖情况
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值