diff --git a/lib/hamcrest-core-1.3.jar b/lib/hamcrest-core-1.3.jar new file mode 100644 index 0000000..9d5fe16 Binary files /dev/null and b/lib/hamcrest-core-1.3.jar differ diff --git a/lib/junit-4.13.2.jar b/lib/junit-4.13.2.jar new file mode 100644 index 0000000..6da55d8 Binary files /dev/null and b/lib/junit-4.13.2.jar differ diff --git a/src/test/util/DatabaseUtilTest.java b/src/test/util/DatabaseUtilTest.java new file mode 100644 index 0000000..0555fbd --- /dev/null +++ b/src/test/util/DatabaseUtilTest.java @@ -0,0 +1,81 @@ +package test.util; + +import org.junit.Test; +import util.DatabaseUtil; + +import java.sql.Connection; +import java.sql.SQLException; + +import static org.junit.Assert.*; + +/** + * DatabaseUtil类的单元测试 + */ +public class DatabaseUtilTest { + + /** + * 测试获取数据库连接 + */ + @Test + public void testGetConnection() { + try (Connection conn = DatabaseUtil.getConnection()) { + // 验证连接不为空 + assertNotNull("数据库连接不应该为空", conn); + // 验证连接是否有效 + assertTrue("数据库连接应该是有效的", !conn.isClosed()); + } catch (SQLException e) { + fail("获取数据库连接时发生异常: " + e.getMessage()); + } + } + + /** + * 测试连接自动关闭 + */ + @Test + public void testConnectionAutoClose() { + Connection conn = null; + try { + // 在try-with-resources块中获取连接 + try (Connection autoCloseConn = DatabaseUtil.getConnection()) { + assertNotNull("数据库连接不应该为空", autoCloseConn); + assertTrue("连接应该是开启状态", !autoCloseConn.isClosed()); + } + // try-with-resources块结束后,获取一个新连接来测试 + conn = DatabaseUtil.getConnection(); + assertNotNull("新的数据库连接不应该为空", conn); + assertTrue("新的连接应该是开启状态", !conn.isClosed()); + } catch (SQLException e) { + fail("测试连接自动关闭时发生异常: " + e.getMessage()); + } finally { + if (conn != null) { + try { + conn.close(); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } + } + + /** + * 测试多次获取连接 + */ + @Test + public void testMultipleConnections() { + try (Connection conn1 = DatabaseUtil.getConnection(); + Connection conn2 = DatabaseUtil.getConnection()) { + + assertNotNull("第一个数据库连接不应该为空", conn1); + assertNotNull("第二个数据库连接不应该为空", conn2); + + // 验证获取到的是两个不同的连接对象 + assertNotEquals("两个连接对象应该是不同的实例", conn1, conn2); + + // 验证两个连接都是有效的 + assertTrue("第一个连接应该是有效的", !conn1.isClosed()); + assertTrue("第二个连接应该是有效的", !conn2.isClosed()); + } catch (SQLException e) { + fail("测试多个连接时发生异常: " + e.getMessage()); + } + } +}