当前位置: 首页 > 面试题库 >

测试基于控制台的应用程序/程序-Java

东门文斌
2023-03-14
问题内容

所有,

我已经用Java编写了基于命令行的PhoneBook应用程序。该应用程序基本上会询问用户的一些详细信息,例如姓名,年龄,地址和电话号码,并将它们存储在文件中。其他操作包括按名称,电话号码等查找电话簿。所有详细信息都通过控制台输入。

我正在尝试为我已实现的每个功能编写JUnit测试用例,但无法弄清楚如何将System.in实现代码重定向到我的JUnit测试方法中的某个东西,当我的实际代码停止供用户输入时,这些东西将提供这些值?

例:

我的实现代码具有:

BufferedReader is = new BufferedReader (new InputStreamReader(System.in));
System.out.println("Please enter your name:");
String name = is.readLine();             // My test cases stop at this line. How can I pass command line values i.e. redirect System.in to my test based values?

希望有道理


问题答案:

为什么不编写您的应用程序以接受Reader输入呢?这样,您可以轻松地将替换InputStreamReader(System.in)FileReader(testFile)

public class Processor {
    void processInput(Reader r){ ... }
}

然后是两个实例

Processor live = new Processor(new InputStreamReader(System.in));
Processor test = new Processor(new FileReader("C:/tmp/tests.txt");

习惯于对接口进行编码将在程序的几乎每个方面带来巨大的好处!

还要注意,a Reader是在Java程序中处理基于字符的输入 惯用方式。InputStreams应该保留用于原始字节级处理。



 类似资料:
  • sh wget progressbar colorama Gooey——把 CLI 程序变成 GUI

  • 问题内容: 我正在用Java编写一个简单的控制台应用程序(80x24),是否有等效的gotoxy(x,y)? 问题答案: 如果要通过gotoxy(x,y)将光标重新定位在控制台上特定的位置,则通常可以使用VT100控制代码来执行此操作。参见http://www.termsys.demon.co.uk/vtansi.htm。 做类似的事情 它将光标移动到控制台上的位置10,10。

  • 如果我正在开发一个相当简单的基于Spring Boot控制台的应用程序,那么我不确定主执行代码的位置。我应该将其放置在public static void main(String[]args)方法中,还是让主应用程序类实现CommandLineRunner接口并将代码放置在run(String…args)方法中? 我将使用一个示例作为上下文。假设我有以下[基本]应用程序(编码为接口,Spring样

  • 我的SpringBoot应用程序中有一个控制器: 我想在mocks的帮助下,将其与服务分开进行测试。如何实施?

  • progressbar 提供了一个控制台进度条工具,示例代码: from progressbar import ProgressBar import time pbar = ProgressBar(maxval=10) for i in range(1, 11): pbar.update(i) time.sleep(1) pbar.finish() # 60% |#########

  • wget 是一个很强大的 Python 下载库, 使用方法如下: >>> import wget >>> url = 'http://www.futurecrew.com/skaven/song_files/mp3/razorback.mp3' >>> filename = wget.download(url) 100% [.....................................