【IDEA2025版本】中使用junit测试无法使用键盘录入功能(Scanner),回车会出现This view is read-only该怎么办?

IDEA 2025版

1.Scanner在通过单元测试Junit测试代码运行时出现阻塞,代码无法正常通过运行,而且在敲击回车时出现查看为只读现象

IDEA中使用junit测试无法使用键盘录入功能(Scanner),敲击回车会出现This view is read-only(此视图是只读的)该怎么办?

我也是一整天在处理这个问题,通过网络搜索,AI问答,给到的结果都是要去配置文件添加一串命令,但是该命令添加进去后还是出现这个问题,最后发现了关巧
以下图中,是idea两个配置文件的路径,在这两个配置文件中分别配置如下:

2.解决方案

-Deditable.java.test.console=true

解读

这两个配置文件都要配置,有一个没有配置,不生效的,它们时两个不同的配置文件,虽然长的一样,但是长官的配置代码都是不同的,而且还要手动输入,不能复制粘贴,全程英文状态下

使用notepad++或者系统自带的文本文档打开配置文件

在这里插入图片描述
在这里插入图片描述

3.重启idea,打开再运行单元测试的Scanner代码就可以正常跑通了

以上内容如果还是无法解决问题,您可以考虑更换idea版本或者跳过本次单元测试,当然也可以不适用Scanner对象来操作数据。
可以使用外部文件或者前端进行校验
如果本教程对大家处理的问题有用,可以点击收藏、关注、点赞哦

在 IntelliJ IDEA使用 JUnit 进行参数化测试,若使用 JUnit 5,通常包含以下操作。 #### 配置依赖 若为 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> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-engine</artifactId> <version>5.8.2</version> <scope>test</scope> </dependency> ``` #### 创建测试类 在测试目录下创建测试类,例如: ```java import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.ValueSource; import static org.junit.jupiter.api.Assertions.assertTrue; public class ParameterizedTestingExample { @ParameterizedTest @ValueSource(ints = {1, 2, 3, 4, 5}) void testNumbersGreaterThanZero(int number) { assertTrue(number > 0); } } ``` 上述代码中,`@ParameterizedTest` 注解表明这是一个参数化测试方法,`@ValueSource` 用于提供一组简单的参数值。 #### 运行测试测试类或测试方法上右键选择“Run '测试类名'”或“Run '测试方法名'”,IntelliJ IDEA 会运行参数化测试并展示结果。 JUnit 4 也能进行参数化测试JUnit 4 参数化测试使用 `@RunWith(Parameterized.class)` 和 `@Parameters` 注解。示例代码如下: ```java import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import java.util.Arrays; import java.util.Collection; import static org.junit.Assert.assertEquals; @RunWith(Parameterized.class) public class JUnit4ParameterizedTest { private int input; private boolean expected; public JUnit4ParameterizedTest(int input, boolean expected) { this.input = input; this.expected = expected; } @Parameterized.Parameters public static Collection<Object[]> data() { return Arrays.asList(new Object[][]{ {1, true}, {2, false}, {3, true}, {4, false} }); } @Test public void testIsOdd() { assertEquals(expected, isOdd(input)); } private boolean isOdd(int number) { return number % 2 != 0; } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI@独行侠

你的鼓励将是我最大的动力,感谢

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值