2015-04-26 4 views
0

, как я могу проверить функцию, которая принимает «ActionEvent» параметр типа в Java/Swing? Ниже приводится функция, что я хочу, чтобы тест:Unit Тестирование функции, которая принимает ActionEvent в качестве параметра

public void actionPerformed(ActionEvent e) 
    { 
          // Communicating with the Model class // 

     /** if the "Add" button has been pressed **/ 
    if (e.getActionCommand() == "Add") 
    { 
     String cust_name = view.getAddCustNameField().getText(); 
     int ph_num = Integer.parseInt(view.getAddPhoneNumField().getText()); 
     model.addEntry(cust_name, ph_num, "controller"); 
    } 

    /** if the "Delete" button has been pressed **/ 
    else if (e.getActionCommand() == "Delete") 
    { 
     String cust_name = view.getDelCustNameField().getText(); 
     model.deleteEntry(cust_name, "controller"); 
    } 

    /** if the "Update" button has been pressed **/ 
    else if (e.getActionCommand() == "Update") 
    { 
     String cust_name = view.getUpdCustNameField().getText(); 
     int ph_num = Integer.parseInt(view.getUpdPhoneNumField().getText()); 
     model.updateEntry(cust_name, ph_num, "controller"); 
    } 

         // Communicating with the View class //  
    else 
    { 

     /** if the "Change Family" button has been pressed **/ 
     Font fontRes = view.getResDisplayField().getFont(); 
     Font fontDir = view.getDirDisplayField().getFont(); 
     if (e.getActionCommand() == "Change Family") 
     { 
      String fontFamily = view.getFontFamilyField().getText();  
      if (fontFamily != "") 
      { 
       view.getResDisplayField().setFont(new Font(fontFamily, fontDir.getStyle(), fontRes.getSize())); 
      } 
     } 

     /** if the "Change Size" button has been pressed **/ 
     else if (e.getActionCommand() == "Change Size") 
     { 
      int fontWeight = Integer.parseInt(view.getFontSizeField().getText());    
      if (fontWeight > 0) 
      { 
       view.getResDisplayField().setFont(new Font(fontRes.getFamily(), fontRes.getStyle(), fontWeight)); 
       view.getDirDisplayField().setFont(new Font(fontDir.getFamily(), fontDir.getStyle(), fontWeight)); 
      } 
     } 

     /** if the "Change Italics" button has been pressed **/ 
     else if (e.getActionCommand() == "Change Style") 
     { 
      String fontStyle = (String)(view.getFontStyleCombo().getSelectedItem()); 
      if (fontStyle == "Plain") 
      { 
       view.getResDisplayField().setFont(new Font(fontRes.getFamily(), Font.PLAIN, fontRes.getSize())); 
       view.getDirDisplayField().setFont(new Font(fontDir.getFamily(), Font.PLAIN, fontDir.getSize())); 
      } 

      else if (fontStyle == "Italic") 
      { 
       view.getResDisplayField().setFont(new Font(fontRes.getFamily(), Font.ITALIC, fontRes.getSize())); 
       view.getDirDisplayField().setFont(new Font(fontDir.getFamily(), Font.ITALIC, fontDir.getSize())); 
      } 

      else if (fontStyle == "Bold") 
      { 
       view.getResDisplayField().setFont(new Font(fontRes.getFamily(), Font.BOLD, fontRes.getSize())); 
       view.getDirDisplayField().setFont(new Font(fontDir.getFamily(), Font.BOLD, fontDir.getSize())); 
      } 
     } 

    }// 'else' (if the command is meant for the view class) 

Таким образом, в основном я хочу, чтобы эмулировать нажатие кнопки действия и в зависимости от конкретной кнопки нажата одна из ветвей условного оператора выполняется. В соответствии с каждой кнопкой имеется набор из двух JTextFields, значение которых я должен каким-то образом установить в своей модульной тестовой функции. Это «... CustNameField» и «... PhoneNumField», значение которых я вводил в вышеуказанную функцию, поэтому я должен заранее установить их значения, чтобы я мог напрямую их вводить. Как я могу это сделать?

+0

Это не ясно, что вы хотите сделать точно. «Я хочу подражать кнопкам нажатия кнопок *» и «* Я должен заранее установить их значения, чтобы я мог напрямую их вводить. Как я могу это сделать?» это две разные вещи. Можете ли вы реструктурировать свой вопрос с точки зрения того, что у вас есть и что вы хотите сделать? – user1803551

ответ

0

Вы можете использовать насмешливые рамки как EasyMock или mokito.

Этих рамки аллосы вас:

  • создать фиктивный объект для интерфейса
  • записи ожидаемого метод вызывает динамически
  • поставить фиктивный объект в режиме воспроизведения и
  • передать его метод, который должен быть проверен
  • проверить, что звонки были выполнены, как ожидалось.
Смежные вопросы