gpt4 book ai didi

java - java 中的单元测试

转载 作者:行者123 更新时间:2023-12-01 07:52:45 24 4
gpt4 key购买 nike

我必须为这个java程序添加测试。但是,我不明白我可以在这样的程序中使用什么测试。我真的没有看到使用测试的任何好处,因为它不是一个类似于查找数字是否素数的程序。

package utcn;

import javax.swing.*;
import java.sql.*;
import java.awt.event.*;

public class BorrowBook extends JFrame implements ActionListener {
/**
* title will be the label for "Enter a book title" message
*/
JLabel title;
/**
* ttitle will be the field for introducing the title
*/
JTextField ttitle;
/**
* btn_borrow is the button for borrowing a book
*/
JButton btn_borrow;

/**
* This method will create a window for borrowing a book.
*/
public BorrowBook() {
super("BorrowBook");
title = new JLabel("Enter a book title:");
title.setBounds(20, 20, 200, 15);
ttitle = new JTextField(20);
ttitle.setBounds(130, 20, 220, 30);
btn_borrow = new JButton("BorrowBook");
btn_borrow.setBounds(220, 65, 100, 40);
btn_borrow.addActionListener(this);
setVisible(true);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setLocationRelativeTo(null);
setSize(500, 150);

setLayout(null);
add(btn_borrow);

add(title);
add(ttitle);
}

/**
* This method will be called when the button is pressed. The application
* require for an book title. If the introduced title can be find in the
* database, it will be displayed a success message, otherwise an error
* message. Also, in the database, the nr_exempare will be decreased and the
* nr_imprumuturi will be increased.
*/
@Override
public void actionPerformed(ActionEvent ex) {
Connection conn = null;
PreparedStatement pst = null;
PreparedStatement pst1 = null;
ResultSet rs = null;
String title = ttitle.getText();
conn = MySqlConnect.ConnectDB();
try {
pst = conn.prepareStatement("update carti set nr_exemplare=nr_exemplare-1 where nume_carte=? ");
pst1 = conn.prepareStatement("update carti set nr_imprumuturi=nr_imprumuturi+1 where nume_carte=? ");
pst.setString(1, ttitle.getText());
pst1.setString(1, ttitle.getText());
int i = pst.executeUpdate();
int i1 = pst1.executeUpdate();
if ((i > 0) && (i1 > 0)) {
dispose();
JOptionPane.showMessageDialog(null, "Your book has been borrowed!");
} else {
JOptionPane.showMessageDialog(null, "Invalid book title.", "Accse Denied", JOptionPane.ERROR_MESSAGE);

}
} catch (Exception e) {
JOptionPane.showMessageDialog(null, e);
}

}
}

最佳答案

您将很难在此处添加测试,因为您的方法可以完成所有操作:

  • 从 UI 获取一些文本属性
  • 建立数据库连接
  • 构建并执行查询
  • 提供一些用户反馈

通常,这些操作应拆分为多个类和对象,负责各自的操作集。

一般来说,您可以并且应该在这里测试的是更新语句是否相应执行,并且新数据是您期望的数据。但为了能够正确测试,您必须更好地组织代码。

将 UI 从业务逻辑和数据库操作中分离出来。

关于java - java 中的单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34559444/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com