首页 > 解决方案 > 如何为具有args参数的方法编写junit测试用例

问题描述

这是我的junit测试用例代码

public class HelptextValidation {

@Test
public void test() {
CLIReaderTest cli=new CLIReaderTest();
String Output="Test Execution";
assertEquals(cli.readCommandLineParameters(new String[]{"-h"}) , Output);


 }

 }

是准备测试用例的类方法

public class CLIReaderTest {
private String user = "";
private String password = "";
private String serverUrl = "";
private  boolean spit_everythingtoLog = false;
public boolean readCommandLineParameters(String[] args) {
Logger log = Logger.getLogger(CLIReader.class);
Options options = new Options();

Option helpOpt = Option.builder("h").longOpt("help").desc("Usage Help").build();
options.addOption(helpOpt);

Option serverurl = Option.builder("url").longOpt("server url").desc("Server url").required().hasArg().argName("url").build();
options.addOption(serverurl);

Option userOpt = Option.builder("u").longOpt("user").desc("User Name").hasArg().argName("user").required().build();
options.addOption(userOpt);

Option pwdOpt = Option.builder("p").longOpt("password").desc("user password").hasArg().argName("password").required().build();
options.addOption(pwdOpt);
  try {
  CommandLineParser parser = new DefaultParser();
  CommandLine cmd = parser.parse(options, args, true);
  
  if(cmd.hasOption("v")) {
    spit_everythingtoLog = true;

  }
  
  serverUrl = cmd.getOptionValue("url");
  user = cmd.getOptionValue("u");
  password = cmd.getOptionValue("p");
  streamName = cmd.getOptionValue("s");
  compList = cmd.getOptionValue("c");
  
  }

  catch (Exception e) {


   String temp1="--help";
   String temp2="[--help]";
   String temp3="[-h]";
   String temp4="-h";
  if(temp1.equals(args[0]) || temp2.equals(args[0]))
  {
    System.out.println("Test Execution");
    System.exit(1);
  }
  }
  

在这里,当用户在命令行中传递java -jar abc.jar -h时,输出是“测试执行” 我想对我的测试用例做同样的事情,但我无法传递 cmd 参数并将其与字符串进行比较。谁能帮我解决这个问题?

标签: javajunit

解决方案


推荐阅读