类似于topcoder/codecheff的Java测试用例实现

类似于topcoder/codecheff的Java测试用例实现,java,input,junit,output,Java,Input,Junit,Output,我想实现一个testcase,它将运行特定的java类,然后向它提供输入并从中获取输出 因此,这里有三个问题: 1) 我们如何从junit运行另一个java类?我们是否需要运行命令行来执行此操作? 2) java类运行后,我们如何向它提供输入?我们在控制台上打印吗? 3) 如何读取程序的输出,我们在这里读控制台吗 我没有编写过很多测试用例,只编写了一些简单的测试用例,可以在任何java类中调用一个方法并断言它。有人能帮我做这件事吗 注:这既不是大学/学校的家庭作业,也不是公司工作p1)测试从ju

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

因此,这里有三个问题:

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

我没有编写过很多测试用例,只编写了一些简单的测试用例,可以在任何java类中调用一个方法并断言它。有人能帮我做这件事吗

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

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

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


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

系统规则库为重定向输入和输出提供了良好的支持。谢谢mikebolt,stefan,我会试试这两个,然后告诉你。