- 新增 AICommandHandlerTest.java (8个测试) - 新增 GUIServiceTest.java (11个测试) - 修复 SQLDialect.java 添加缺失的 qr_code, location, description 列 - 修复多个测试文件的数据初始化问题 - 更新 gui/build.gradle 添加测试依赖 - 更新 Jenkinsfile 保留测试数据库文件 测试统计: - Core: 222 tests passed - Backend: 67 tests passed - CLI: 13 tests passed - GUI: 11 tests passed - Total: 313 tests, 0 failures, 0 skippedmain
parent
57e291f938
commit
2968b5e1f3
@ -0,0 +1,104 @@
|
||||
package com.smartlibrary.cli;
|
||||
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.DisplayName;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.PrintStream;
|
||||
import java.util.Scanner;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
/**
|
||||
* AI命令处理器测试
|
||||
*/
|
||||
@DisplayName("AI命令处理器测试")
|
||||
class AICommandHandlerTest {
|
||||
|
||||
private AICommandHandler handler;
|
||||
private ByteArrayOutputStream outputStream;
|
||||
private PrintStream originalOut;
|
||||
|
||||
@BeforeEach
|
||||
void setUp() {
|
||||
Scanner scanner = new Scanner(new ByteArrayInputStream("".getBytes()));
|
||||
handler = new AICommandHandler(scanner);
|
||||
|
||||
// 捕获输出
|
||||
outputStream = new ByteArrayOutputStream();
|
||||
originalOut = System.out;
|
||||
System.setOut(new PrintStream(outputStream));
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("测试AI助手处理")
|
||||
void testHandleAIAssistant() {
|
||||
handler.handleAIAssistant("推荐一些编程书籍");
|
||||
String output = outputStream.toString();
|
||||
assertTrue(output.contains("AI") || output.contains("问题"), "应该包含AI相关输出");
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("测试智能搜索处理")
|
||||
void testHandleSmartSearch() {
|
||||
handler.handleSmartSearch("机器学习");
|
||||
String output = outputStream.toString();
|
||||
assertTrue(output.contains("搜索") || output.contains("查询"), "应该包含搜索相关输出");
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("测试推荐处理")
|
||||
void testHandleRecommendation() {
|
||||
handler.handleRecommendation("USER001");
|
||||
String output = outputStream.toString();
|
||||
assertTrue(output.contains("推荐") || output.contains("用户"), "应该包含推荐相关输出");
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("测试摘要处理")
|
||||
void testHandleSummary() {
|
||||
handler.handleSummary("BOOK001");
|
||||
String output = outputStream.toString();
|
||||
assertTrue(output.contains("摘要") || output.contains("功能"), "应该包含摘要相关输出");
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("测试AI帮助显示")
|
||||
void testShowAIHelp() {
|
||||
handler.showAIHelp();
|
||||
String output = outputStream.toString();
|
||||
assertTrue(output.contains("AI") || output.contains("帮助"), "应该包含帮助信息");
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("测试空查询处理")
|
||||
void testEmptyQuery() {
|
||||
handler.handleAIAssistant("");
|
||||
String output = outputStream.toString();
|
||||
assertNotNull(output, "空查询也应该有输出");
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("测试特殊字符查询")
|
||||
void testSpecialCharacterQuery() {
|
||||
handler.handleAIAssistant("测试<>&\"'特殊字符");
|
||||
String output = outputStream.toString();
|
||||
assertNotNull(output, "特殊字符查询应该正常处理");
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("测试长查询处理")
|
||||
void testLongQuery() {
|
||||
String longQuery = "这是一个很长的查询".repeat(100);
|
||||
handler.handleAIAssistant(longQuery);
|
||||
String output = outputStream.toString();
|
||||
assertNotNull(output, "长查询应该正常处理");
|
||||
}
|
||||
|
||||
@org.junit.jupiter.api.AfterEach
|
||||
void tearDown() {
|
||||
System.setOut(originalOut);
|
||||
}
|
||||
}
|
||||
@ -1,10 +1,10 @@
|
||||
#MCSLMS DataSource Configuration - v1.7.0
|
||||
#Sun Dec 14 23:21:24 CST 2025
|
||||
#Tue Dec 16 00:40:24 CST 2025
|
||||
database.host=127.0.0.1
|
||||
database.name=testdb
|
||||
database.password=
|
||||
database.port=5433
|
||||
database.type=SQLITE
|
||||
database.url=jdbc\:sqlite\:library.db
|
||||
database.url=jdbc\:sqlite\:E\:\\2025-2026\\\u8F6F\u4EF6\u5DE5\u7A0B\u57FA\u7840\\\u5B9E\u9A8C\\MCSLMS\\core\\library.db
|
||||
database.username=
|
||||
environment=DEV
|
||||
|
||||
Loading…
Reference in new issue