从 Scanner 获取输入时 Maven 挂起

2023-11-30

我正在设计一个程序,该程序必须使用 mvn test 命令运行并从命令行获取用户输入。当我使用 mvn test 运行程序时,一切正常,直到Scanner.next()执行后,CLI 挂起,我必须关闭该程序。

my test method
    public class AppTest 
{
    @Test
    public void shouldAnswerWithTrue()
    {
        Scanner sc = new Scanner(System.in);
        System.out.println("Awaiting input");
        String in = sc.next();
        System.out.println("TEST!" + in);
        assertTrue( true );
    }
}

我的 pom.xml

    <?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.mycompany.app</groupId>
  <artifactId>my-app</artifactId>
  <version>1.0-SNAPSHOT</version>

  <name>my-app</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <build>
    <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
      <plugins>
        <!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle -->
        <plugin>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.1.0</version>
        </plugin>
        <!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
        <plugin>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.8.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.22.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-jar-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-install-plugin</artifactId>
          <version>2.5.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>2.8.2</version>
        </plugin>
        <!-- site lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#site_Lifecycle -->
        <plugin>
          <artifactId>maven-site-plugin</artifactId>
          <version>3.7.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-project-info-reports-plugin</artifactId>
          <version>3.0.0</version>
        </plugin>
        <plugin>
               <groupId>org.codehaus.mojo</groupId>
                <artifactId>exec-maven-plugin</artifactId>
                <version>1.2.1</version>
                <configuration>
                    <mainClass>com.vogella.build.maven.intro.Main</mainClass>
                </configuration>
            </plugin>
      </plugins>
    </pluginManagement>
  </build>
</project>

是否可以使用 Scanner 类以这种方式处理输入?或者通过这种方式通过maven命令行界面?


据我所知,您不能通过 Maven 使用 Scanner 作为任何代码的一部分。 Maven 是帮助你构建、测试、部署——实际上并不是在运行时帮助你。此外,通常来说,单元测试不应依赖于运行时的输入。

解决方案 1:从命令行直接使用 Java 运行 jUnit 测试
java -cp .:/usr/share/java/junit.jar org.junit.runner.JUnitCore AppTest

更多信息here.

解决方案 2:使用系统属性
然后您可以使用System.getProperty("myVariable");
你会运行它mvn -Dtest=shouldAnswerWithTrue -DargLine="-myVariable=abc"

查看有关的更多信息这个方法在这里.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 Scanner 获取输入时 Maven 挂起 的相关文章

  • 现在正在复制文件吗? [复制]

    这个问题在这里已经有答案了 可能的重复 C 不时检查文件是否存在并从中读取 https stackoverflow com questions 12578177 c sharp from time to time check if a fi
  • 如何实现具有LinkedHashMap类似功能的ConcurrentHashMap?

    我用过LinkedHashMap with accessOrdertrue 并同时允许最多 500 个条目作为数据的 LRU 缓存 但由于可扩展性问题 我想转向一些线程安全的替代方案 ConcurrentHashMap在这方面似乎不错 但缺
  • 通过 html tidy 提供渲染 jsp 页面

    我有一个在 Glassfish 上运行的 Java 项目 它会呈现一些难看的 HTML 这是使用各种内部和外部 JSP 库的副作用 我想设置某种渲染后过滤器 通过 HTMLTidy 提供最终的 HTML 这样源代码就很好且整洁 有助于调试
  • Spring boot 2.0.5.RELEASE和mongo 4.0连接问题

    我正在关注使用 MongoDB 访问数据教程春季网站 https spring io guides gs accessing data mongodb 我将 Mongo DB 服务器版本 4 安装为服务当我使用客户端连接到它时 它的身份验证
  • jpa2 CriteriaBuilder order by “ORDER BY 表达式必须出现在选择列表中”

    我正在写一个查询标准生成器 但无法添加order by子句 因为它随消息一起抛出错误ORDER BY 表达式必须出现在选择列表中这是我的实体 public class A Integer aId ManyToOne JoinColumn n
  • Glassfish:在部署期间修改 EAR 的部署描述符

    经过几天的搜索 尝试和摇头 我将这个问题发布到 SO 尽管它seems已经得到答复 这是场景 我有一个 EAR 应用程序 目前 包含一个 WAR 和一个 EJB 模块 EJB 模块使用 JPA persistence xml 并且一些无状态
  • 初始堆大小无效。无法创建Java虚拟机

    我遇到了下一个问题 我尝试通过startup bat手动启动Tomcat 但似乎没有显示任何结果 然后我尝试运行shutdown bat 控制台显示如下 D apache tomcat 7 0 35 bin gt startup bat U
  • Android 游戏偶尔出现延迟

    我正在用 Java 制作一个简单的 Android 游戏 我注意到每 20 40 秒就会出现一些烦人的延迟 首先 我认为它们是由垃圾收集器引起的 但当我检查 LogCat 时 我发现游戏滞后时没有垃圾收集 每当游戏开始滞后时 我都会标记日志
  • 按文件名过滤 eclipse 中的警告

    我们使用 Eclipse 进行 Java 开发 并使用 Maven 将 JSP 编译成 servlet 以便在嵌入式 Jetty 实例中使用 这意味着要从 Eclipse 运行该项目 我必须包含 target jsp source 作为源文
  • spring mvc 跟踪引用页面

    在基于注释的弹簧控制器中 如果用户正在url com first page并点击一个链接或提交一份表格指出url com second page 如何制作second page知道url of first page所以这样second pa
  • 如何在Java中打印保留2位小数的浮点数?

    我可以用System out print 您可以使用printf http java sun com j2se 1 5 0 docs api java io PrintStream html printf 28java lang Strin
  • 为什么我要使用责任链而不是 switch 语句

    考虑一下您已经获得了多次验证 仅当要检查的对象属于某种类型时 这些验证才应生效 为什么我要使用责任链而不是 switch 语句 责任链示例 public class Executor Inject private ValidatorFact
  • 如何在 JdbcTemplate 中创建 mySQL 存储过程

    背景 为了解决 MySql 中某些语句只允许在存储过程中出现的问题 我尝试在 JdbcTemplate 提交的 sql 中创建 运行然后删除存储过程 一个简单的例子是 这恰好是在 Spring Boot 中 Service public c
  • selenium webdriver 中的多个程序执行不起作用

    Selenium WebDriver 中的多个程序执行不起作用 我编写了 1 个 testNG xml 文件和 2 个 java 类 我尝试从 xml 文件运行这两个 java 类 但这不起作用 XML代码
  • 使用 JNI 从 Java 代码中检索 String 值的内存泄漏

    我使用 GetStringUTFChars 从使用 JNI 的 java 代码中检索字符串的值 并使用 ReleaseStringUTFChars 释放该字符串 当代码在 JRE 1 4 上运行时 不会出现内存泄漏 但如果相同的代码在 JR
  • JFrame Glasspane 也优于 JDialog,但不应该

    我有一个带有 Glasspane 的 JFrame 未装饰 该框架打开一个 JDialog 也未装饰 也有一个 glassPane 并隐藏自身 setVisible false Glasspanes 通过 setGlassPane 设置 对
  • Java 不可变对象 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在学习不变性的概念 据我了解 一旦创建对象 不可变对象就无法更改其值 但我不明白不可变对象的以下用途 They are 自动是线程
  • 如何使 JScrollPane 与嵌套 JPanel 一起正常工作?

    我正在使用 NetBeans 在 Java 中构建 Swing 应用程序 但我遇到布局问题 我的主框架包含一个JScrollPane其中包含一个JPanel called contentPanel其中又包含一个JPanel called l
  • Retrofit 2.0:预期为 BEGIN_OBJECT,但在第 1 行第 1 列路径 $ [重复] 处为 STRING

    这个问题在这里已经有答案了 我在邮递员上传递了更新用户请求并获得了成功的响应 参见图片 现在当我尝试使用 Retrofit 2 在我的应用程序中执行相同操作时 出现错误 com google gson JsonSyntaxException
  • Java 可变 BigInteger 类

    我正在使用 BigIntegers 进行计算 该计算使用一个调用 multiply 大约 1000 亿次的循环 并且从 BigInteger 创建新对象使其非常慢 我希望有人编写或找到了 MutableBigInteger 类 我在 jav

随机推荐

  • 如何在Python中使用Selenium关闭浏览器弹出窗口?

    我正在尝试使用 Python 和 Selenium 自动下载 在起始页中 页面上会出现一个弹窗 如何使用 Selenium 关闭它 我尝试了以下方法但都失败了 gt gt gt alert browser switch to alert g
  • 如何使用 PHP 的 mail() 函数和 MAMP Pro 发送邮件?

    我正在开发一个将利用 PHP 的 mail 函数的网站 我正在运行 MAMP Pro 主要是因为它具有 Postfix 功能 应该对发送电子邮件有用 我觉得我已经尝试了所有方法 但我的程序仍然无法发送电子邮件 我使用 mail 对我来说并不
  • HTML 选择值传递到 Javascript var(然后用于获取 JSON)

    我已经查看了许多其他堆栈问答 但无法到达我需要让我的代码正常工作的地方 我觉得我想做的事情很简单 显然不适合我 我有两个选择部分 每个部分产生所需的不同信息 首先是 oceanVal 第二个是fishVal 我希望用户选择的值发送到我的 j
  • 如何使用 pyparsing 验证布尔表达式语法?

    我正在使用 Pyparsing 库来评估简单的布尔查询 如下所示 真与真 或假与真 真与 真或假或真 使用示例部分中的 simpleBool 脚本 simpleBool py 我在尝试验证表达式语法时遇到了障碍 像下面这样的表达式被认为是有
  • 如何使用 TagLib-Sharp 从 MP3 文件读取 XingHeaders 和 VBRIHeaders

    我需要使用 TagLib Sharp 提取 MP3 文件的 Xing 和 Fraunhofer VBRI 标头中存储的信息 我在网上搜索了一个示例 查看了源代码 但如何使用 XingHeader 和 VBRIHeader 类并不明显 它们看
  • 添加、减去 datetime.time 列 pandas

    我有以下数据框 flight departure arrival at desination boarding total flight time total flight time 2 time to collect bags 0 00
  • C# 是具有泛型类型约束的泛型类型

    我们假设一个接口 interface IOwnedBy
  • 罕见的 IE10 bug:背景位置的 CSS 动画在多个背景和百分比下失败

    这是一个非常具体的错误 但是 我希望有人能向我展示解决方法 该错误主要在于 IE10 无法执行 CSS 动画background position当这两个条件满足时同时 拥有多重背景 Setting background position以
  • 按列提取 PDF 文本

    我的问题是 如何从按列划分的 PDF 文件中提取文本 并获得按该列分隔的结果 背景 我从事一个关于文本分析 尤其是科学文本 的项目 这些文本有时以多栏布局发布 每栏都有一个单独的页码 要按布局页码对提取的文本进行排序 按列提取文本会很有用
  • Redis 中的范围查询 - Spring Data Redis

    有没有一种方法可以使用 Spring Data Redis 在 Redis 中实现范围查询 Eg 如果我的 Pojo 类有 Date 不是主键 并且我需要属于所需日期期间的数据 是否可以使用 Spring Data Redis 构建相同的查
  • iframe 内的页面看不到自己的 cookie

    我们有 2 个位于不同域的网站 为了简单起见 我们假设它们是 App 运行在上面的 SPA 应用程序main app com app Host 运行一个简单的index html页面random site com index html in
  • awk 搜索一个文件中的列,如果匹配则打印两个文件中的列

    我正在尝试比较 file1 中的第 1 列和文件 2 中的第 3 列 如果它们匹配 则打印 file1 中的第一列和 file2 中的前两列 这是每个文件的示例 file1 Cre01 g000100 Cre01 g000500 Cre01
  • 放置现有的sqlite数据库并读取

    在 android 文件夹结构中将现有的 sqlite 数据库放置在哪里 是drawable文件夹还是layout文件夹 我没有找到任何解决方案 任何帮助将不胜感激 你应该把它放在assets文件夹 这样你就可以确保它会附加到你的 apk
  • Vuejs图片src动态加载不起作用

    我刚刚开始使用 Vue js 和 Vue CLI 我遇到了一个问题 我不明白为什么我不能从范围内动态设置图像 但我可以直接在 HTML 中编写它 obj img是一个字符串 assets logo png也很有价值 我伪造 ajax 调用超
  • 如何生成 firebase 注册令牌

    我正在尝试使用新方法生成 firebase 注册令牌 但无法生成以下代码 MyFirebaseInstanceIdService java public class MyFirebaseInstanceIdService extends F
  • UIView 边界和框架的属性观察者的反应不同

    当我正在探索观察的选项时UIView s bounds or frame改变 提到here and here 我遇到了一个非常奇怪的差异 didSet and willSet将根据您放置的位置不同地触发UIView在视图层次结构中 如果我使
  • Gmail 不会在电子邮件中呈现 html

    我将用一个非常基本的示例再尝试一次 当我使用 PHP 向电子邮件客户端发送电子邮件时 除了 gmail 之外 没有任何问题 当我在 gmail 中查看电子邮件时 我看到的只是邮件的代码 Gmail 不显示 HTML 它只是显示代码 这是我的
  • 如何在 Accord.net 中保存“学习状态”?

    我是机器学习和 Accord net 的初学者 我了解了如何训练它然后使用它 但在企业环境中 在服务器上运行它 我如何坚持 Accord net 的学习成果 我是否需要保存所有训练数据并在每次重新启动应用程序时重新训练 通过添加在代码中导入
  • Linux crontab 每月第 n 个星期六

    除周六外 我喜欢在所有工作日恢复跑步 我的 crontab 条目 30 16 1 2 3 4 5 backup sh 这个条目工作正常 另外 我喜欢在第一 第三个星期六恢复 如果一个月内有第五个星期六可用 则应运行备份 crontab 的条
  • 从 Scanner 获取输入时 Maven 挂起

    我正在设计一个程序 该程序必须使用 mvn test 命令运行并从命令行获取用户输入 当我使用 mvn test 运行程序时 一切正常 直到Scanner next 执行后 CLI 挂起 我必须关闭该程序 my test method pu