日志、测试与部署(零基础详细版)

目标:配置基础日志,编写 MockMvc/JUnit 用例,完成打包并以内嵌/外置 Tomcat 运行。

← 返回一级入口

学习目标与前置

建议用时:60-90 分钟准备:Spring Boot + Todo 接口

Step 1:日志配置

private static final Logger log = LoggerFactory.getLogger(TodoService.class);

public Todo create(Todo t) {
  log.info("create todo title={}", t.getTitle());
  mapper.insert(t);
  return t;
}
<!-- src/main/resources/logback-spring.xml -->
<configuration>
  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <pattern>%d{HH:mm:ss.SSS} %-5level [%thread] %logger{36} - %msg%n</pattern>
    </encoder>
  </appender>
  <root level="INFO">
    <appender-ref ref="STDOUT"/>
  </root>
</configuration>

说明:INFO 级别输出基础日志;可按需增加文件输出。

Step 2:MockMvc/JUnit 测试

flowchart LR
  A[MockMvc 调用 Controller] --> B[业务处理]
  B --> C[返回响应]
  C --> D[断言状态码/内容]
  D --> E[测试报告]
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-test</artifactId>
  <scope>test</scope>
</dependency>
@SpringBootTest
@AutoConfigureMockMvc
class TodoControllerTest {
  @Autowired MockMvc mvc;

  @Test
  void createAndList() throws Exception {
    mvc.perform(post("/api/todos")
        .contentType("application/json")
        .content("{\"title\":\"demo\",\"done\":false}"))
      .andExpect(status().isOk())
      .andExpect(content().string(containsString("demo")));

    mvc.perform(get("/api/todos"))
      .andExpect(status().isOk())
      .andExpect(content().string(containsString("demo")));
  }
}

说明:@SpringBootTest 启动上下文;@AutoConfigureMockMvc 注入 MockMvc;断言状态码与响应体。

Step 3:打包与运行

flowchart LR
  A[mvn clean package] --> B[JAR]
  B --> C[内嵌启动 java -jar]
  A --> D[WAR (skipTests)]
  D --> E[部署到外置 Tomcat]
mvn clean package
# 内嵌运行
java -jar target/demo-0.0.1-SNAPSHOT.jar

# 外置 Tomcat(打 war)
mvn clean package -DskipTests
# 将 demo-0.0.1-SNAPSHOT.war 放入 Tomcat webapps
# 启动 Tomcat,访问 http://localhost:8080/demo

说明:Jar 适合快速运行;War 可部署在集中 Tomcat。课堂可各演示一次。

Step 4:操作与验证

  1. 运行 mvn test,查看通过结果。
  2. 故意改接口返回值让测试失败,再修复,演示回归。
  3. 打包 jar 运行;再打包 war 放 Tomcat,对比访问路径。

常见问题与排查

课堂练习

课后巩固