用junit测试主要方法
问题内容:
我编写了一个类,它从控制台输入数据,并在main方法中输入参数。main方法针对不同的控制台输入调用不同的方法,并且针对不同的参数调用不同的函数。因此,我想通过模仿文件中的这些输入来使用Junit测试此主要方法。我该怎么做?junit中是否有特殊规定来测试该类的主要方法?
问题答案:
要提供来自文件的输入,请创建一个FileInputStream
并将其设置为System.in
流。您可能要在main方法完成后将原始文件放回原处,以确保以后使用它的所有内容仍然有效(其他测试,JUnit本身…)
这是一个例子:
@Test
public void testMain() throws IOException {
System.out.println("main");
String[] args = null;
final InputStream original = System.in;
final FileInputStream fips = new FileInputStream(new File("[path_to_file]"));
System.setIn(fips);
Main.main(args);
System.setIn(original);
}
在您的实际代码中,您将需要处理任何IOExceptions并使用比文件的完整路径更好的方法(通过类加载器获取),但这为您提供了总体思路。