J'essaie d'obtenir des informations à l'intérieur d'un vide actionEvent afin de pouvoir l'utiliser pour le test JUnit (première fois en essayant d'utiliser JUnit). Mais je ne sais pas comment faire cela. Si quelqu'un peut donner quelques conseils, je l'apprécierais. Voici mon code ci-dessous. (ce code est juste à utiliser avec test avec JUnit, je connais sa sauce poubelle.

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);

    }
    
    }
    
2
CreativeXtent 31 août 2020 à 06:43

2 réponses

Meilleure réponse

Vous pouvez voir cet article ici: https: // examples.javacodegeeks.com/core-java/junit/junit-test-void-method-example/

1
Spindoctor 31 août 2020 à 05:11

J'ai trouvé qu'au lieu d'essayer de faire cela, il est plus facile de convertir les ActionEvent du clic du bouton à l'authentification. Tel que cela.

btnLogout.setOnAction((ActionEvent e) -> {
            doLogin();
        });

Et mettez tout le reste dans le doLogin. La réponse de @Spindoctor est bonne et doit être comptée.

1
CreativeXtent 1 sept. 2020 à 01:33