我在为这种情况编写JUnit测试时遇到了麻烦。我得到运行时错误。我试过
import junit.framework.*;
import student.TestCase;
public class MemmanTest extends TestCase {
public MemmanTest() {
// empty
}
public void testMemmanSystemIn() throws Exception {
setSystemIn("10 32 P1sampleInput.txt");
Memman.main(null);
assertTrue(systemOut().getHistory(), "P1sampleOutput.txt");
}
}`
所以我可以检查输入文件和输出文件是否相同。(实际上,当我运行acutal程序时,它是一样的,但我只是无法制作测试用例。)
这不是调用main的方式。
如果没有指定任何参数,则args变量不为null;它是一个空数组。
Memman.main(new String[]{});
您也可以使用varargs而不是数组,然后只调用不带参数的main。
Edit:正如Holger所指出的,看起来您正试图使用setSystemIn()将参数传递到main()方法中。那行不通。相反,您应该将它们传递到数组中:
Memman.main(new String[]{"10", "32", "P1sampleInput.txt"});
这是谷歌搜索"junit pass arguments to main"的第一个结果:在Eclipse 中将命令行参数传递给junit