java如何在程序中获得JUnit类,以便在提示后向控制台提供字符串输入?
我有一个带有main()
方法的程序,它在运行的两个不同时间向用户请求一行输入。然后,它获取这两行输入,并以特定的方式对它们进行比较
我有一个JUnit测试类,它初始化了6个字符串(string1, string2,...,string6
),当程序提示用户这样做时,我不知道如何获取这些字符串并通过将它们发送到System.in
来模拟用户输入
基本上,在程序的第一次运行时,程序会说“请输入您的第一个字符串”,然后会说“请输入您的第二个字符串”在这两个提示下,我想分别从测试类中输入string1
和string2
。然后,在程序的第二次运行时,我想输入string3
和string4
有办法做到这一点吗?我试着尽可能让人理解这一点,但如果我在努力让别人理解我的观点,我会理解的。如果你有什么不明白的地方,请告诉我,我会尽力澄清任何模糊的细节
# 1 楼答案
您应该重构代码,将执行计算的部分与从控制台获取输入的部分分开。然后,通过将必要的输入作为参数传递,您可以非常轻松地为执行计算的部件编写测试。与控制台一起工作的部分通常非常简单,不需要测试
在不重构代码的情况下测试这一点相当复杂。你需要更换系统。在和系统中。通过成对的PipedInputStream和PipedOutStream输出。然后需要启动一个线程,从连接到系统的PipedInputStream读取数据。当它看到输入提示时,将预期的输入写入连接到系统的PipedOutputStream。进来
# 2 楼答案
您可以使用库System Rules的TextFromStandardInputStream规则