Java GUI的Junit测试

Java GUI的Junit测试,java,junit,Java,Junit,我有以下简单的实用计算器 现在我想在这里应用一些Junit测试。 我不知道如何在Gui上执行Junit测试。 所以,请帮助我 代码是: /* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor.

我有以下简单的实用计算器

现在我想在这里应用一些Junit测试。 我不知道如何在Gui上执行Junit测试。 所以,请帮助我

代码是:

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package calculator;
import java.io.*;
import java.text.DecimalFormat;
/**
 *
 * @author owner
 */
public class Calculator_Utility extends javax.swing.JFrame {

    /**
     * Creates new form Calculator_Utility
     */
    public Calculator_Utility() {
        initComponents();UsePowerKw.setText("4.0");
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
      private void setComponentsName(){
      AddButton.setName("Add");
     }
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        CostPerKW = new javax.swing.JLabel();
        SelectAppliance = new javax.swing.JLabel();
        PowerUsage = new javax.swing.JLabel();
        NumberHoursUse = new javax.swing.JLabel();
        TotalCostApp = new javax.swing.JLabel();
        AddButton = new javax.swing.JButton();
        CostPerKwTextField = new javax.swing.JTextField();
        UsePowerKw = new javax.swing.JTextField();
        HourUse = new javax.swing.JTextField();
        CostApp = new javax.swing.JTextField();
        AllTotal = new javax.swing.JLabel();
        AllTotalApp = new javax.swing.JTextField();
        SelectApp = new javax.swing.JComboBox<>();
        Showfield = new javax.swing.JTextField();
        GallonWater = new javax.swing.JLabel();
        GallonWat = new javax.swing.JTextField();
        Export = new javax.swing.JButton();
        CostGallon = new javax.swing.JLabel();
        CostGall = new javax.swing.JTextField();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        CostPerKW.setText("Cost Per KW Hour:");

        SelectAppliance.setText("Select Appliance:");

        PowerUsage.setText("Power Usage In KW Hours:");

        NumberHoursUse.setText("Number of Hours use per day:");

        TotalCostApp.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        TotalCostApp.setText("Total Cost For Appliance");

        AddButton.setText("ADD");
        AddButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                AddButtonActionPerformed(evt);
            }
        });

        CostPerKwTextField.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                CostPerKwTextFieldActionPerformed(evt);
            }
        });

        UsePowerKw.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                UsePowerKwActionPerformed(evt);
            }
        });

        AllTotal.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        AllTotal.setText("Total of All Appliances");

        SelectApp.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "Refrigerator", "Washer", "Dryer", "Freezer", "Air Conditioner" }));
        SelectApp.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                SelectAppActionPerformed(evt);
            }
        });

        GallonWater.setText("Gallon of Water:");

        Export.setText("Export");
        Export.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                ExportActionPerformed(evt);
            }
        });

        CostGallon.setText("Cost Per Gallon:");

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(layout.createSequentialGroup()
                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                                        .addComponent(NumberHoursUse)
                                        .addComponent(SelectAppliance)
                                        .addComponent(PowerUsage)
                                        .addComponent(CostPerKW))
                                    .addComponent(CostGallon, javax.swing.GroupLayout.Alignment.TRAILING)
                                    .addComponent(GallonWater, javax.swing.GroupLayout.Alignment.TRAILING))
                                .addGap(4, 4, 4))
                            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                                .addComponent(AllTotal)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)))
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(CostPerKwTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(UsePowerKw, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(HourUse, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(SelectApp, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(AllTotalApp, javax.swing.GroupLayout.PREFERRED_SIZE, 99, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(GallonWat, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(CostGall, javax.swing.GroupLayout.PREFERRED_SIZE, 111, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addGap(0, 0, Short.MAX_VALUE))
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(Showfield, javax.swing.GroupLayout.PREFERRED_SIZE, 270, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 21, Short.MAX_VALUE)
                        .addComponent(Export)))
                .addContainerGap())
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addGap(0, 0, Short.MAX_VALUE)
                .addComponent(TotalCostApp)
                .addGap(4, 4, 4)
                .addComponent(CostApp, javax.swing.GroupLayout.PREFERRED_SIZE, 121, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(18, 18, 18)
                .addComponent(AddButton)
                .addGap(24, 24, 24))
        );

        layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {AllTotalApp, CostApp, CostGall, CostPerKwTextField, GallonWat, HourUse, SelectApp, UsePowerKw});

        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(CostPerKW)
                    .addComponent(CostPerKwTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(SelectAppliance)
                    .addComponent(SelectApp, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(PowerUsage)
                    .addComponent(UsePowerKw, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(6, 6, 6)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(NumberHoursUse)
                    .addComponent(HourUse, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(GallonWat, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(GallonWater)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(CostGallon)
                            .addComponent(CostGall, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 29, Short.MAX_VALUE)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(CostApp, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addComponent(TotalCostApp))
                    .addComponent(AddButton))
                .addGap(13, 13, 13)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(AllTotalApp, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(AllTotal))
                .addGap(18, 18, 18)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(Showfield, javax.swing.GroupLayout.PREFERRED_SIZE, 136, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(Export))
                .addContainerGap())
        );

        pack();
    }// </editor-fold>                        

    //Declare Variables and intialize the variables
    private void AddButtonActionPerformed(java.awt.event.ActionEvent evt) {                                          
    double answer;
    double total = 0;
    String s = SelectApp.getSelectedItem().toString();

    //Check if user select "Washer" from drop down box, calculate usage with Gallon
        if (s=="Washer") {

          //DecimalFormat df= new DecimalFormat("#.##");
         number1 = (int)((Double.parseDouble(CostPerKwTextField.getText())));         

         number2 = (int)((Double.parseDouble(UsePowerKw.getText())));

         number3 = (int)((Double.parseDouble(HourUse.getText())));

         number4 = (int)((Double.parseDouble(GallonWat.getText()))); 

         answer = number1*number2*number3;
         total =+ answer; 

         CostApp.setText(String.valueOf(answer + "\n"));

         Showfield.setText(String.valueOf("The appliance run a total of " +  answer + "\n"));

        }
        //if user select any appliances other than washer calculate usage
        else 

         number1 = (int)((Double.parseDouble(CostPerKwTextField.getText())));         

         number2 = (int)((Double.parseDouble(UsePowerKw.getText())));

         number3 = (int)((Double.parseDouble(HourUse.getText())));


         answer = number1*number2*number3;
         total =+ answer; 


        //Calculated amount is put into field
         CostApp.setText(String.valueOf(answer + "\n"));

         Showfield.setText(String.valueOf("The appliance run a total of " +  answer + "\n"));


                      // TODO add your handling code here:
    }                                         

    //Action listener/Events for JCombo. Pre-defined Power Usage for Each Appliacnes
    private void SelectAppActionPerformed(java.awt.event.ActionEvent evt) {                                          
        // TODO add your handling code here:

        String s=SelectApp.getSelectedItem().toString();
        double r=4;
        double w=7;
        double x=12;
        double y=16;
        double z=24;
        if (s=="Refrigerator"){
            UsePowerKw.setText(String.valueOf(r));

        }
        else if (s=="Washer") {UsePowerKw.setText(String.valueOf(w));}
        else if (s=="Dryer") {UsePowerKw.setText(String.valueOf(x));}
        else if (s=="Freezer") {UsePowerKw.setText(String.valueOf(y));}
        else UsePowerKw.setText(String.valueOf(z));


    }                                         

    private void UsePowerKwActionPerformed(java.awt.event.ActionEvent evt) {                                           
        // TODO add your handling code here:
        //If jComboBox1 = "Refrigerator" then set jTextField4 = 22
    }                                          


    //Action Listener/Event creates Data.txt with output
    private void ExportActionPerformed(java.awt.event.ActionEvent evt) {                                       
        File file = new File("Data.txt");

        try (Writer writer = new BufferedWriter(new FileWriter(file))) {
            String contents = Showfield.getText();

                    //"The quick brown fox" +
                    //System.getProperty("line.separator") +
                    //"jumps over the lazy dog.";

            writer.write(contents);
        } catch (IOException e) {
            e.printStackTrace();
        }

    }                                      

    private void CostPerKwTextFieldActionPerformed(java.awt.event.ActionEvent evt) {                                                   
        // TODO add your handling code here:
    }                                                  

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(Calculator_Utility.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(Calculator_Utility.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(Calculator_Utility.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(Calculator_Utility.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Calculator_Utility().setVisible(true);
            }
        });
    }

    public double number1, number2, number3, number4; 
    // Variables declaration - do not modify                     
    private javax.swing.JButton AddButton;
    private javax.swing.JLabel AllTotal;
    private javax.swing.JTextField AllTotalApp;
    private javax.swing.JTextField CostApp;
    private javax.swing.JTextField CostGall;
    private javax.swing.JLabel CostGallon;
    private javax.swing.JLabel CostPerKW;
    private javax.swing.JTextField CostPerKwTextField;
    private javax.swing.JButton Export;
    private javax.swing.JTextField GallonWat;
    private javax.swing.JLabel GallonWater;
    private javax.swing.JTextField HourUse;
    private javax.swing.JLabel NumberHoursUse;
    private javax.swing.JLabel PowerUsage;
    private javax.swing.JComboBox<String> SelectApp;
    private javax.swing.JLabel SelectAppliance;
    private javax.swing.JTextField Showfield;
    private javax.swing.JLabel TotalCostApp;
    private javax.swing.JTextField UsePowerKw;
    // End of variables declaration                   
}
/*
*要更改此许可证标题,请在“项目属性”中选择“许可证标题”。
*要更改此模板文件,请选择工具|模板
*然后在编辑器中打开模板。
*/
包装计算器;
导入java.io.*;
导入java.text.DecimalFormat;
/**
*
*@作者所有者
*/
公共类计算器\实用程序扩展了javax.swing.JFrame{
/**
*创建新的表单计算器实用程序
*/
公共计算器_实用程序(){
initComponents();使用powerkw.setText(“4.0”);
}
/**
*从构造函数中调用此方法来初始化表单。
*警告:不要修改此代码。此方法的内容始终为
*由表单编辑器重新生成。
*/
私有void setComponentsName(){
AddButton.setName(“添加”);
}
@抑制警告(“未选中”)
//                           
私有组件(){
CostPerKW=newjavax.swing.JLabel();
SelectAppliance=newjavax.swing.JLabel();
PowerUsage=newjavax.swing.JLabel();
NumberHoursUse=newjavax.swing.JLabel();
TotalCostApp=newjavax.swing.JLabel();
AddButton=newjavax.swing.JButton();
CostPerKwTextField=newjavax.swing.JTextField();
UsePowerKw=newjavax.swing.JTextField();
HourUse=newjavax.swing.JTextField();
CostApp=newjavax.swing.JTextField();
AllTotal=newjavax.swing.JLabel();
AllTotalApp=newjavax.swing.JTextField();
SelectApp=newjavax.swing.JComboBox();
Showfield=newjavax.swing.JTextField();
GallonWater=newjavax.swing.JLabel();
GallonWat=newjavax.swing.JTextField();
Export=newjavax.swing.JButton();
costgallen=newjavax.swing.JLabel();
CostGall=newjavax.swing.JTextField();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
CostPerKW.setText(“每千瓦时成本:”);
setText(“选择设备:”);
PowerUsage.setText(“以千瓦时为单位的用电量:”);
setText(“每天使用的小时数:”);
TotalCostApp.setFont(新的java.awt.Font(“Tahoma”,1,11));//NOI18N
TotalCostApp.setText(“设备总成本”);
AddButton.setText(“添加”);
AddButton.addActionListener(新java.awt.event.ActionListener(){
public void actionPerformed(java.awt.event.ActionEvent evt){
AddButtonActionPerformed(evt);
}
});
CostPerKwTextField.addActionListener(新java.awt.event.ActionListener(){
public void actionPerformed(java.awt.event.ActionEvent evt){
CostPerKwTextFieldActionPerformed(evt);
}
});
UsePowerKw.addActionListener(新的java.awt.event.ActionListener(){
public void actionPerformed(java.awt.event.ActionEvent evt){
UsePowerKwActionPerformed(evt);
}
});
setFont(新的java.awt.Font(“Tahoma”,1,11));//NOI18N
AllTotal.setText(“所有设备的总计”);
选择app.setModel(新javax.swing.DefaultComboxModel(新字符串[]{“冰箱”、“洗衣机”、“烘干机”、“冰箱”、“空调”});
选择app.addActionListener(新建java.awt.event.ActionListener()){
public void actionPerformed(java.awt.event.ActionEvent evt){
选择AppActionPerformed(evt);
}
});
加仑水.setText(“加仑水:”);
Export.setText(“导出”);
Export.addActionListener(新java.awt.event.ActionListener(){
public void actionPerformed(java.awt.event.ActionEvent evt){
执行的输出操作(evt);
}
});
setText(“每加仑成本:”);
javax.swing.GroupLayout=newjavax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(布局);
layout.setHorizontalGroup(
createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.training)
.addComponent(NumberHoursUse)
.addComponent(选择设备)
.addComponent(电源使用)
.addComponent(成本加成)
.addComponent(costgaller、javax.swing.GroupLayout.Alignment.training)
.addComponent(GallonWater、javax.swing.GroupLayout.Alignment.Training))
.addGap(4,4,4))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,layout.createSequentialGroup()
.addComponent(全部合计)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)))
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(CostPerKwTextField,javax.swing.GroupLayout.PREFERRED_SIZE,javax.swing.GroupLayout.DEFAULT_SIZE,javax.s
JButton showDialogButton = new JButton("Text Button");
showDialogButton.addActionListener(new ActionListener()
{
    public void actionPerformed(ActionEvent e)
    {
         calculate(1, 1);
    }
});

private int calculate(int n1, int n2){
    return n1 + n2;
}
assertEquals(2, calculate(1, 1));