已编辑我正在学习如何使用JUnit编写测试用例。免责声明:我还没有理解我在网上找到的关于这件事的任何信息。:)我想为此写一个简单的测试用例:我有一个简单的Java类,它接受参数作为主函数的参数并打印它。编辑:
这是我的主要功能:public static void main(字符串args[]){
//Expecting 3 arguments: 1. InputDirectory path, 2. OutputDirectory path, 3. Keys-comma separated
checkArguments(args);
private static void checkArguments(String[] args) {
// TODO Auto-generated method stub
if (args.length != 3) {
try {
System.out.println("Invalid input arguments");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return;
}
}
}
这个主要函数代码运行良好。现在我需要编写一个测试用例,以便检查有多少输入,并相应地打印消息。到目前为止,我已经写了这个:
FilterProcessPDK checkArg = new FilterProcessPDK();
int testCheckArgRes = checkArg.checkArguments(); //I dont know how to pass the arguments to this function
@Test
public void testCheckArgs(){
assertEquals("message", expected, actual);
}
为此,我将给出输入-1)输入路径(C:/xyz/Input)2)输出路径(C://xyz/Output)3)任何数量的"键"("A"或"A,j")的列表
我认为这不合适。
我不得不承认,我通常不会测试主要的方法。它应该是编排了一堆我测试得很好的其他东西。当我进入主方法时,我已经有了足够的覆盖范围和信心,不会测试输入和输出问题。
一个更好的解决方案是通过契约编程:让您的主方法强制执行它所需的输入的先决条件。如果用户提供的输入不正确,请告知他们。