java - Java 的测试用例实现类似于 topcoder/codechef

标签 java input junit output

我想实现一个测试用例,它将运行特定的 java 类,然后向它提供输入并从中获取输出。

所以,这里有三个问题:

1) 我们如何从 junit 运行另一个 java 类?我们需要运行命令行来执行此操作吗? 2)java类运行后,我们如何向它提供输入?我们在控制台上打印它吗? 3)如何读取程序的输出,我们在这里读取控制台吗?

我没有编写很多测试用例,只是编写了简单的测试用例,这些测试用例将调用任何 java 类中的方法并断言该方法。谁能帮我做这件事吗?

注意:这既不是大学/学校的家庭作业,也与公司工作无关......:p

最佳答案

1) 通过 junit 测试方法测试在另一个类中编写的代码涉及创建该类的实例然后调用其方法,或者调用该类的静态方法。如果你想运行该类的 main 方法(当你从命令行运行 java 程序时自动运行的方法),那么只需调用 MyClass.main(someArgs) ,其中 someArgs 是假命令行参数,以数组形式给出字符串。

2) 调用 main 后,您的程序将正常运行。如果需要,您可以手动输入内容来测试您的程序。但由于您正在编写测试方法,您可能希望自动化此操作...

3) 您可以使用System.setIn and System.setOut将输入和输出重定向到您自己的InputStream 和OutputStream。然后,您可以直接从测试方法发送“用户”输入,并根据 OutputStream 的内容进行断言。

关于java - Java 的测试用例实现类似于 topcoder/codechef,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24052474/

相关文章:

python - 如何在 Python 中打开并读取输入文件并将其打印到输出文件?

java - 如何使用带有类的构造函数模拟对象?

Java不会使用parseInt

c++ - 我怎样才能找到这个数组中的最高值和最低值?

java - 为什么 JBoss 总是重新部署已经部署但未更改的 .WAR 文件?

javascript - 显示占位符,直到用户输入不带空格的文本

java - 如何在某些测试中禁用 flapdoodle 嵌入式 mongodb

java - 如何检查 java.lang.AssertionError (JUnit 5)

java - Java方法如何使用谁将它们传递给它们

java - Izpack:创建自定义面板