如何解决我如何使用JUnit测试void actionEvent中的信息
我试图从一个空的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,20);
pL.setBounds(20,80,20);
userT1.setBounds(70,100,30);
pass1.setBounds(70,30);
logButt.setBounds(70,30);
reButt.setBounds(70,130,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,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);
}
}
解决方法
您可以在这里看到此文章:https://examples.javacodegeeks.com/core-java/junit/junit-test-void-method-example/
,我发现,与其尝试执行此操作,不如将ActionEvent的内容从单击按钮转换为身份验证更容易。这样的。
btnLogout.setOnAction((ActionEvent e) -> {
doLogin();
});
,然后将其他所有内容放入doLogin中。 @Spindoctor的答案是好的,应该计算在内。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。