Java 如何使用JUnit测试void actionEvent中的信息

Java 如何使用JUnit测试void actionEvent中的信息,java,junit,actionevent,Java,Junit,Actionevent,我试图从一个void actionEvent内部获取信息,以便我可以将其用于JUnit测试(第一次尝试使用JUnit)。但我不知道如何做到这一点。如果有人能提供一些指导,我将不胜感激。 下面是我的代码。(这段代码只用于JUnit的测试,我知道它的垃圾酱 import java.awt.Container; import javax.swing.JTextField; import java.awt.event.ActionEvent; import java.awt.event.ActionLi

我试图从一个void actionEvent内部获取信息,以便我可以将其用于JUnit测试(第一次尝试使用JUnit)。但我不知道如何做到这一点。如果有人能提供一些指导,我将不胜感激。 下面是我的代码。(这段代码只用于JUnit的测试,我知道它的垃圾酱

import java.awt.Container;
import javax.swing.JTextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JOptionPane;
import javax.swing.JPasswordField;
import javax.swing.JFrame;
import javax.swing.JLabel;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.net.UnknownHostException;
import java.time.OffsetDateTime;
import java.time.ZoneOffset;


public class frameIt extends JFrame implements ActionListener {

    Container cont = getContentPane();
    JLabel uL = new JLabel("USER");
    JLabel pL = new JLabel("PASS");
    JTextField userT1 = new JTextField();
    JPasswordField pass1 = new JPasswordField();
    JButton logButt = new JButton("LOGIN");
    JButton reButt = new JButton("RESET");
    


    frameIt() {
        
        cont.setLayout(null);
    
        uL.setBounds(20, 50, 50, 20);
        pL.setBounds(20, 80, 50, 20);
        userT1.setBounds(70, 50, 100, 30);
        pass1.setBounds(70, 80, 100, 30);
        logButt.setBounds(70, 100, 100, 30);
        reButt.setBounds(70, 130, 100, 30);
       
        cont.add(logButt);
        cont.add(reButt);
        cont.add(uL);
        cont.add(pL);
        cont.add(userT1);
        cont.add(pass1);
    
        logButt.addActionListener(this);
        reButt.addActionListener(this);

    }

//auditing
    public String theLog(String user, String eventType) throws UnknownHostException {
        //UTC date and time string
        OffsetDateTime dateTimeUTC = OffsetDateTime.now(ZoneOffset.UTC);

        // create date and time string
        Date dateTimeLocal = Date.from(dateTimeUTC.toInstant());

        // create filewriter, bufferedwriter, and printwriter
        FileWriter FWrite = null;
        BufferedWriter buffWrite = null;
        PrintWriter printerWrite = null;

        // try block
        try {
            // create file
            File logFile = new File("Log.log");

            // check if file already exists
            // if file does not exist then create it
            if (!logFile.exists()) {
                logFile.createNewFile();
            }

            //filewriter, bufferedwriter, and printwriter
            FWrite = new FileWriter(logFile, true);
            buffWrite = new BufferedWriter(FWrite);
            printerWrite = new PrintWriter(buffWrite);

            //printwriter
           
            printerWrite.println("----------------------");
            printerWrite.println("UTC Date/Time: " + dateTimeUTC);
            printerWrite.println("Local Date/Time: " + dateTimeLocal);
            printerWrite.println("User name: " + user);
            printerWrite.println("Event type: " + eventType);
            printerWrite.println("----------------------");
            printerWrite.println("");

        } 
        // catch block 
        
        catch (IOException e) {
            System.out.println("Sorry, there was an error.");
        } finally {
           
            // printwriter
            printerWrite.close();
        }

        return null;
    }
    
    
    
    public void actionPerformed(ActionEvent aE)  {
       
        
        
    if (aE.getSource() == reButt) {
            userT1.setText("");
            pass1.setText("");
            
        }
    
        if (aE.getSource() == logButt) {
            
            String userText = userT1.getText();
            String pwdText = String.valueOf(pass1.getPassword());
           
            try {
            
            if (userText.equals("admin") && pwdText.equals("admin")) {
                theLog(userText, "Good Login");
                JOptionPane.showMessageDialog(this, "Login Correct");
            } else {
                JOptionPane.showMessageDialog(this, "try again");
                theLog(userText, "Failed Login");
            }

        }
            
         catch (IOException ex) {
                Logger.getLogger(frameIt.class.getName()).log(Level.SEVERE, null, ex);
                
            }
                 
        
     


          }
        }
    
    public static void main(String[] args) {
        //calling frameIt.java
        frameIt frame = new frameIt();
        //title
        frame.setTitle("Sign on Forever");
        //Want to see it? this is how!
        frame.setVisible(true);
        //Window size
        frame.setBounds(15, 15, 300, 300);
        //exits
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    }
    
    }
    

您可以在这里看到这篇文章:

我发现,与其尝试这样做,不如将ActionEvent从按钮单击转换为身份验证

btnLogout.setOnAction((ActionEvent e) -> {
            doLogin();
        });
把其他的东西都放进去。
@Spindoctor的回答很好,应该被计算在内。

但是这些空有可调用的方法,如何使用上面执行的空操作测试管理员登录?我没有什么可调用的:/i添加了公共空操作执行(ActionEvent aE,String userText,String PWDTText)。这应该会有所帮助