diff --git a/src/test/java/databasetest/database2Test.java b/src/test/java/databasetest/database2Test.java
index 55e09e2..e40e661 100644
--- a/src/test/java/databasetest/database2Test.java
+++ b/src/test/java/databasetest/database2Test.java
@@ -523,37 +523,37 @@
 
     @TestFactory
     Collection<DynamicTest> testDeletePost() {
-        List<Post> existingPosts = em.createQuery("SELECT p FROM Post p", Post.class)
-                .setMaxResults(1)
-                .getResultList();
-        if (existingPosts.isEmpty()) {
+        List<String> userIds = em.createQuery("select u.userid from User u", String.class).getResultList();
+        if (userIds.isEmpty()) {
             return Collections.emptyList();
         }
-
-        Post postToDelete = existingPosts.get(0);
-        String postId = postToDelete.postid;
+        String uid = userIds.get(0);
+        String postid = "test_post_" + System.currentTimeMillis();
+        Post post = new Post();
+        post.postid = postid;
+        post.postuserid = uid;
+        post.posttitle = "单元测试帖子";
+        post.postcontent = "内容";
+        post.posttime = new Date();
 
         return List.of(
-                DynamicTest.dynamicTest("DeletePost success", () -> {
-                    EntityTransaction tx = em.getTransaction();
-                    try {
-                        tx.begin();
-                        int ret = db.DeletePost(postId);
-                        Assertions.assertEquals(0, ret, "DeletePost 应返回0");
-                    } finally {
-                        tx.rollback();
-                    }
-                }),
-
-                DynamicTest.dynamicTest("DeletePost not exist", () -> {
-                    int ret = db.DeletePost("not_exist_post");
-                    Assertions.assertEquals(1, ret, "不存在的帖子应返回1");
-                }),
-
-                DynamicTest.dynamicTest("DeletePost invalid param", () -> {
-                    Assertions.assertEquals(2, db.DeletePost(null));
-                    Assertions.assertEquals(2, db.DeletePost(""));
-                }));
+            DynamicTest.dynamicTest("DeletePost success", () -> {
+                try {
+                    int addRet = db.AddPost(post);
+                    int delRet = db.DeletePost(postid);
+                    Assertions.assertEquals(0, delRet, "DeletePost 应返回0");
+                } finally {
+                }
+            }),
+            DynamicTest.dynamicTest("DeletePost not exist", () -> {
+                int ret = db.DeletePost("not_exist_post");
+                Assertions.assertEquals(1, ret, "不存在的帖子应返回1");
+            }),
+            DynamicTest.dynamicTest("DeletePost invalid param", () -> {
+                Assertions.assertEquals(2, db.DeletePost(null));
+                Assertions.assertEquals(2, db.DeletePost(""));
+            })
+        );
     }
 
     @TestFactory
