Skip to content

Commit 5dc367a

Browse files
committed
update java test
1 parent f282911 commit 5dc367a

File tree

5 files changed

+64
-45
lines changed

5 files changed

+64
-45
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
a.out
33
*.o
44
*.class
5+
target/
56
*.pyc
67
.idea
78

domain-driven-design/java-web/README.md

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -71,16 +71,21 @@ java-web/
7171

7272
## 运行
7373
```bash
74+
# 安装
7475
$ mvn clean install -U
75-
$ mvn clean package
76+
# 打包
77+
$ mvn clean package -DskipTests
78+
# 执行
7679
$ java -jar target/java-web-order-1.0.0.jar
77-
Starting server on http://localhost:8080 successfully.
80+
# 看到最后出现成功提示
81+
The Server has started. please visit localhost:8080.
7882
# 通过 http://localhost:8080 访问系统
7983

8084
# 测试用例
8185
$ mvn test
86+
# 单个测试
8287
$ mvn surefire:test -Dtest=com.javaweborder.TomcatServerTest
83-
# 展示测试结果
88+
$ mvn surefire:test -Dtest=com.javaweborder.interfaces.routes.OrderRoutesTest
8489
```
8590

8691
## Java 语言 DDD(领域驱动设计)特点

domain-driven-design/java-web/pom.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
12
<project xmlns="http://maven.apache.org/POM/4.0.0"
23
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
34
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

domain-driven-design/java-web/src/test/java/com/javaweborder/TomcatServerTest.java

Lines changed: 45 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -17,81 +17,86 @@
1717

1818
public class TomcatServerTest {
1919

20-
private final String helloResponseText = "Hello, World! 欢迎来到 Tomcat embedded server!";
20+
private static final int PORT = 8080;
21+
private static final String CONTEXT_PATH = "";
22+
private static final String BASE_DIR = new File("src/main/webapp").getAbsolutePath();
23+
private static final String HELLO_RESPONSE_TEXT = "Hello, World! 欢迎来到 Tomcat embedded server!";
2124

2225
@Test
2326
public void testTomcatServerStartup() throws Exception {
2427
// 创建嵌入式 Tomcat 实例并指定端口
2528
Tomcat tomcat = new Tomcat();
26-
int port = 8080;
27-
tomcat.setPort(port);
29+
tomcat.setPort(PORT);
2830

29-
// 输出一些调试信息
30-
System.out.println("Initializing Tomcat server on port " + port + "...");
31+
System.out.println("Initializing Tomcat server on port " + PORT + "...");
3132

3233
// 获取 Tomcat 的 Connector 信息
3334
Connector connector = tomcat.getConnector();
3435
System.out.println("Tomcat connector details: " + connector);
3536

36-
// 创建 Web 应用上下文
37-
String contextPath = "";
38-
String baseDir = new File("src/main/webapp").getAbsolutePath();
39-
System.out.println("Base directory for the web application: " + baseDir);
40-
4137
// 创建和添加上下文
42-
Context context = tomcat.addContext(contextPath, baseDir);
38+
Context context = tomcat.addContext(CONTEXT_PATH, BASE_DIR);
4339
System.out.println("Web application context added at: " + context.getPath());
4440

4541
// 添加一个简单的 Servlet
4642
Tomcat.addServlet(context, "HelloServlet", new HttpServlet() {
4743
@Override
4844
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
4945
resp.setContentType("text/html; charset=UTF-8");
50-
resp.getWriter().write(helloResponseText);
46+
resp.getWriter().write(HELLO_RESPONSE_TEXT);
5147
}
5248
});
5349
context.addServletMappingDecoded("/hello", "HelloServlet");
5450
System.out.println("Servlet '/hello' mapped successfully.");
5551

5652
// 启动 Tomcat 服务器
5753
tomcat.start();
58-
System.out.println("Tomcat started successfully on port " + port + ".");
54+
System.out.println("Tomcat started successfully on port " + PORT + ".");
55+
56+
// 增加断言,验证连接器状态
57+
assertEquals("STARTED", tomcat.getConnector().getStateName(), "Tomcat 连接器状态应为 STARTED");
5958

60-
// 验证 /hello 请求
61-
testHelloRequest(port);
59+
// 可以添加一些延迟,确保服务器完全启动
60+
Thread.sleep(1000);
6261

63-
// 获取 Tomcat 服务器信息
64-
String serverInfo = tomcat.getServer().getStateName();
65-
System.out.println("Tomcat server info: " + serverInfo);
62+
try {
63+
// 验证 /hello 请求
64+
testHelloRequest(PORT);
65+
} finally {
66+
// 关闭 Tomcat 服务器,在测试场景下避免一直阻塞
67+
tomcat.stop();
68+
tomcat.destroy();
69+
}
6670

67-
// 关闭 Tomcat 服务器,在测试场景下避免一直阻塞
68-
tomcat.stop();
69-
tomcat.destroy();
71+
// 输出所有测试通过的信息
72+
System.out.println("所有测试通过!");
7073
}
7174

7275
private void testHelloRequest(int port) throws IOException {
7376
// 构建请求 URL
7477
URL url = new URL("http://localhost:" + port + "/hello");
75-
// 打开 HTTP 连接
7678
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
77-
// 设置请求方法为 GET
78-
connection.setRequestMethod("GET");
79-
80-
// 获取响应状态码
81-
int responseCode = connection.getResponseCode();
82-
// 验证响应状态码是否为 200
83-
assertEquals(200, responseCode, "响应状态码应为 200");
84-
85-
// 读取响应内容
86-
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
87-
StringBuilder response = new StringBuilder();
88-
String line;
89-
while ((line = reader.readLine()) != null) {
90-
response.append(line);
79+
try {
80+
// 设置请求方法为 GET
81+
connection.setRequestMethod("GET");
82+
83+
// 获取响应状态码
84+
int responseCode = connection.getResponseCode();
85+
// 验证响应状态码是否为 200
86+
assertEquals(200, responseCode, "响应状态码应为 200");
87+
88+
// 读取响应内容
89+
try (BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()))) {
90+
StringBuilder response = new StringBuilder();
91+
String line;
92+
while ((line = reader.readLine()) != null) {
93+
response.append(line);
94+
}
95+
// 验证响应内容是否符合预期
96+
assertEquals(HELLO_RESPONSE_TEXT, response.toString(), "响应内容不符合预期");
97+
}
98+
} catch (IOException e) {
99+
throw new RuntimeException(e);
91100
}
92-
reader.close();
93-
94-
// 验证响应内容是否符合预期
95-
assertEquals(helloResponseText, response.toString(), "响应内容不符合预期");
96101
}
97102
}

domain-driven-design/java-web/src/test/java/com/javaweborder/interfaces/routes/OrderRoutesTest.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,13 @@ public void testOrderRoutes() throws IOException {
8181

8282
assertEquals(200, getLastResponseCode(), "更新订单测试失败");
8383

84+
// 测试获取订单
85+
String getAllOrdersResponse = sendRequest(BASE_URL + API_PREFIX + "/orders", "GET", null);
86+
System.out.println("获取全部订单测试状态码:" + getLastResponseCode());
87+
System.out.println("响应体: " + getOrderResponse);
88+
89+
assertEquals(200, getLastResponseCode(), "获取订单测试失败");
90+
8491
// 测试删除订单
8592
String deleteOrderResponse = sendRequest(BASE_URL + API_PREFIX + "/orders/" + orderId, "DELETE", null);
8693
System.out.println("删除订单测试状态码:" + getLastResponseCode());
@@ -109,15 +116,15 @@ private String sendRequest(String urlString, String method, String body) throws
109116
setLastResponseCode(responseCode);
110117

111118
StringBuilder response = new StringBuilder();
112-
try (Scanner scanner = new Scanner(connection.getInputStream(), StandardCharsets.UTF_8)) {
119+
try (Scanner scanner = new Scanner(connection.getInputStream(), String.valueOf(StandardCharsets.UTF_8))) {
113120
while (scanner.hasNextLine()) {
114121
response.append(scanner.nextLine());
115122
}
116123
} catch (IOException e) {
117124
// 处理获取响应体时的异常
118125
System.err.println("获取响应体时出错: " + e.getMessage());
119126
if (connection.getErrorStream() != null) {
120-
try (Scanner errorScanner = new Scanner(connection.getErrorStream(), StandardCharsets.UTF_8)) {
127+
try (Scanner errorScanner = new Scanner(connection.getErrorStream(), String.valueOf(StandardCharsets.UTF_8))) {
121128
while (errorScanner.hasNextLine()) {
122129
response.append(errorScanner.nextLine());
123130
}

0 commit comments

Comments
 (0)