diff --git a/src/test/java/com/g9/g9backend/controller/UserControllerTest.java b/src/test/java/com/g9/g9backend/controller/UserControllerTest.java
index bec8b11..d390dea 100644
--- a/src/test/java/com/g9/g9backend/controller/UserControllerTest.java
+++ b/src/test/java/com/g9/g9backend/controller/UserControllerTest.java
@@ -405,4 +405,63 @@
                         .param("userId", "1"))
                 .andExpect(status().isOk());
     }
+
+    // 修改签名
+    @Test
+    public void testModifySignature() throws Exception {
+
+        User user = new User();
+        user.setUserId(1);
+        user.setSignature("New Signature");
+
+        when(userService.update(any())).thenReturn(true);
+
+        mockMvc.perform(put("/user/signature")
+                        .contentType(MediaType.APPLICATION_JSON)
+                        .content(objectMapper.writeValueAsString(user)))
+                .andExpect(status().isOk());
+    }
+
+    // 修改密码
+    @Test
+    public void testModifyPassword_success() throws Exception {
+
+        // 密码正确
+        when(userService.getOne(any())).thenReturn(new User(1, "hcy", "oldPass", null, 0, 0, null, 0, 0, 0));
+        when(userService.update(any())).thenReturn(true);
+
+        mockMvc.perform(put("/user/password")
+                        .contentType(MediaType.APPLICATION_JSON)
+                        .content(objectMapper.writeValueAsString(new ModifyPasswordDTO(1, "oldPass", "newPass"))))
+                .andExpect(status().isOk());
+    }
+
+    @Test
+    public void testModifyPassword_wrongPassword() throws Exception {
+
+        // 密码错误
+        when(userService.getOne(any())).thenReturn(new User(1, "hcy", "oldPass", null, 0, 0, null, 0, 0, 0));
+
+        mockMvc.perform(put("/user/password")
+                        .contentType(MediaType.APPLICATION_JSON)
+                        .content(objectMapper.writeValueAsString(new ModifyPasswordDTO(1, "wrongPassword", "newPass"))))
+                .andExpect(status().is(408));
+    }
+
+    // 修改头像
+    @Test
+    public void testModifyAvatar() throws Exception {
+
+        // 设置请求参数
+        User user = new User();
+        user.setUserId(1);
+        user.setAvatar("avatar.png");
+
+        when(userService.update(any())).thenReturn(true);
+
+        mockMvc.perform(put("/user/avatar")
+                        .contentType(MediaType.APPLICATION_JSON)
+                        .content(objectMapper.writeValueAsString(user)))
+                .andExpect(status().isOk());
+    }
 }
\ No newline at end of file
