这已被问过,但没有澄清到我得到它的地步。与我在这个主题上看到的其他一两个线程类似,我正在使用命令行输入来登录/关闭,断开连接等工作,并且我不确定如何在JUnit测试中对其进行模拟案件。其他回复表明我应该尝试将System.in更改为单独的InputStream,但是......然后呢? dr:我在我的实际代码中有一个用于解析命令行输入的方法,并且需要JUnit测试方法,输入并正确处理这些方法。JUnit命令行测试
1
A
回答
1
编辑:看来我误解了这个问题。我通常使用术语“命令行输入”来指代给予流程开始的命令行参数,而不是交互式控制台输入。然而...
汉鼎你真正的代码,通过使用不同的InputStream
甚至可能是一个Reader
或Scanner
的确会帮助 - 任何以“让输入”部分从控制台中分离出来。然后,您可以非常容易地将输入伪装成一行,在测试代码中使用字符串作为输入,然后将其转换为字节并将这些字节包装到ByteArrayInputStream
中或直接将字符串包装到StringReader
中。
这样做的不足之处在于,为了检查结果,在一个命令后面做这个“暂停”并没有简单的方法。
您可能要有所改变设计,使得其读取部分输入来自哪个处理输入部分分离。阅读部分可能是一个非常简单的循环,顺序上:
String line;
while ((line = reader.readLine()) != null) {
handleInput(line);
}
然后,您可能会离开的那部分未经测试的单元测试,或者写一些比较原始的测试 - 但你可以再测试handleInput
广泛,如它现在与输入源分离。
原来的答复
如果你提取从真正启动应用程序的代码解析的代码,很容易:运行该代码,并检查结果。当然,如果你有某种封装选项的类,这将是最简单的。例如,您main
方法可能是这样的:
public static void main(String[] args) {
Options options = Options.parse(args);
// Use options here
}
然后,你可以测试Options.parse
变得非常容易。
相关问题
- 1. 从命令行运行Junit测试
- 2. 如何使用mvn测试命令运行MRUnit测试(如JUnit测试)
- 3. 从命令行运行JUnit测试:在Android项目中执行非Android测试
- 4. 如何通过命令行作为JUnit测试运行java类
- 5. 如何从命令行运行Eclipse java JUnit测试套件? (windows)
- 6. 从命令行运行JUnit测试时出错
- 7. 从命令行运行war包中的junit测试
- 8. 如何从命令行使用junit运行多个测试类?
- 9. 在Eclipse中执行JUnit测试之前运行外部命令
- 10. 如何从命令行在框中运行JUnit测试?
- 11. junit并从命令行运行硒测试
- 12. 如何从命令行在JUnit中运行测试用例?
- 13. 错误:jar中的JUnit命令行测试类
- 14. Selenium测试命令行
- 15. Android命令行测试
- 16. 测试命令行参数
- 17. JUnit的设置命令行
- 18. Junit - 命令行参数
- 19. 并行运行JUnit测试
- 20. 传递命令行参数的JUnit测试案例被编程方式运行
- 21. 我可以运行JUnit 4从命令行测试Scala代码吗?
- 22. Maven在Eclipse中运行JUnit测试,但从命令行编译失败
- 23. 为需要命令行输入的Java独立执行JUnit测试用例
- 24. 如果类在包中,如何从命令行运行JUnit测试?
- 25. 使用命令行构建和运行junit测试文件的问题
- 26. 从命令行运行单元测试
- 27. 在命令行上运行appium测试
- 28. 从命令行运行FitNesse的测试
- 29. Xcode命令行测试执行问题
- 30. 从命令行执行FitNesse RestFixture测试
我可能只是有一个史诗般的brainfart,但我不认为这真的回答了我的问题。我可以在我的JUnit测试用例中启动“Welcome,请输入命令:”循环,但是如何从前面提到的没有主要方法的测试用例输入命令? – 2011-03-31 06:05:47
@尼克:啊,我明白了。通过“命令行输入”,我认为你的意思是命令行参数......而你的意思是交互式控制台输入。将编辑。 – 2011-03-31 06:11:03
我认为把阅读与处理分开是我的方法。有一个接受字符串参数的方法,所以我可以在JUnit中手动传递它,这将使我的生活变得轻松。谢谢。 – 2011-03-31 06:22:45