0

Java 项目

   public ArrayShoppingList()
   {

    // initialise instance variables
     super();
    }

   //public void addItem(int itemPosition,String item){
    // super.add(itemPosition,item);
    //  }
   public void addItem(){
      System.out.println("Please enter the item you wish to enter into the shopping 
       List");
       Scanner reader1 = new Scanner(System.in);
       String item = reader1.next();
       super.add(super.size(),item);
      }

    public void getPosition(){
     System.out.println("Please enter the item name that you wish to find 
     theposition         of");
    Scanner reader1 = new Scanner(System.in);
    String item = reader1.next();
    super.indexOf(item);
    }



 public void removeItem(){
    System.out.println("Please enter the item number that you wish to remove");
    Scanner reader1 = new Scanner(System.in);
    String item = reader1.next();
    int itemIndex = super.indexOf(item);
    super.remove(itemIndex);
       }

我想知道如何在要求用户输入的测试类中测试这些方法。这些方法从 ArrayLinearList 调用其他方法并传递用户输入的数据。我想创建代码来模拟用户可能输入的内容。

4

3 回答 3

1

您可以使用MockitoPowermock等框架来模拟 Scanner。如果该类随后调用 Scanner 进行输入,您可以让您的模拟返回一些字符串,这些字符串将由您的类作为用户输入处理。您的班级不会看到“真实”扫描仪和您的模拟实现之间的区别。

也可以看看:

于 2013-10-30T13:09:24.003 回答
1

您可以使用 System.setIn(InputSteam)

在这里你可以指定你自己的输入流并添加你想要的输入。

于 2013-10-30T13:10:04.860 回答
0

用于System.setIn联合测试Scanner。例如:

 String input = "Your input data";
 System.setIn(new ByteArrayInputStream(input.getBytes()));

Scanner scanner = new Scanner(System.in);
System.out.println(scanner.nextLine());

输出:

Your input data
于 2013-10-30T13:09:41.597 回答