Java命令解释器测试

Java命令解释器测试,java,maven,unit-testing,testing,command-line,Java,Maven,Unit Testing,Testing,Command Line,目标很简单。能够测试一个非常简单的命令解释器 我目前正在使用TestNG测试一个根目录中有命令解释器的Java应用程序。但我不能做到这一点 一旦应用程序启动,它就会进入一个循环,该循环处理用户输入并选择从哪里开始(),只有当用户的输入等于“退出”时才会停止。printHelp()方法打印所有可用命令 您能告诉我应该如何继续测试printHelp()方法以模拟用户的输入并获得正确的输出吗 注意:假设printHelp()方法应该打印字符串“所有需要的信息” 下面提供了maven依赖项和主类 pom

目标很简单。能够测试一个非常简单的命令解释器

我目前正在使用TestNG测试一个根目录中有命令解释器的Java应用程序。但我不能做到这一点

一旦应用程序启动,它就会进入一个循环,该循环处理用户输入并选择从哪里开始(),只有当用户的输入等于“退出”时才会停止。printHelp()方法打印所有可用命令

您能告诉我应该如何继续测试printHelp()方法以模拟用户的输入并获得正确的输出吗

注意:假设printHelp()方法应该打印字符串“所有需要的信息”

下面提供了maven依赖项和主类

pom.xml


org.testng
testng
7.0.0
测试
Java主类

publicstaticvoidmain(字符串参数[]){
菜单();
}
private静态无效菜单(){
扫描仪输入=新扫描仪(系统输入);
字符串[]整行;
StringConst.CMDS cmd;//可执行CMDS的枚举
做{
System.out.print(StringConst.PROMPT);//美学
fullLine=in.nextLine().toUpperCase().split(“”);
cmd=StringConst.CMDS.fromString(全文[0]);
开关(cmd){
(...)
案例帮助:
打印帮助();
打破
案件出口:
System.out.println(“退出…”);
打破
违约:
System.err.println(未找到StringConst.);
打破
}
}而(!cmd.equals(StringConst.CMDS.EXIT));
}
private static void打印帮助(){
对于(StringConst.CMDS cmd:StringConst.CMDS.values()){
System.out.println(cmd+“-”+cmd.getDescription());
}
}
StringConst类

公共类StringConst{
public static final String NOT_FOUND=“未找到命令…请重试。”;
公共静态最终字符串提示符=“>”;
公共枚举CMDS{
帮助、退出、其他;
私有字符串描述;
静止的{
HELP.description=“打印每个命令的功能”;
EXIT.description=“退出程序”;
}
公共字符串getDescription(){
返回说明;
}
公共静态CMDS fromString(String temp){
返回CMDS.valueOf(temp);
}
}
}

定制类@ArvindKumarAvinash Apoligies的可能副本。只有常量和枚举。编辑atm@PasupathiRajamanickam我已经看到并尝试过该方法,但该方法假设后台没有主运行。它测试一个单独的方法。我想测试解释器本身。解释器是一个“单独”的方法,只是一个复杂的方法。作为
*流
s或作为
读卡器
/
写卡器
对传入输入和输出。@asfourhund为什么不将扫描仪作为
菜单
方法中的参数传入,并使用输入流模拟使用操作?