/** * @file basic_test.cpp * @brief 智能考勤管理系统单元测试 * * 每个测试用例关联对应的需求标识: * - TestPunchFunction: 覆盖 SRS-ATT_F-001 * - TestAutoCalculate: 覆盖 SRS-ATT_F-002 * - TestWarning: 覆盖 SRS-ATT_F-003 * - TestReport: 覆盖 SRS-ATT_F-004 * - TestThirdPartySync: 覆盖 SRS-ATT_F-005 */ #include "app.hpp" #include #include // 测试 SRS-ATT_F-001: 多终端打卡支持 void testPunchFunction() { AttendanceSystem sys; PunchRequest req; req.employeeId = "EMP_TEST"; req.terminalType = "MOBILE"; req.timestamp = std::time(nullptr); PunchResponse resp = sys.processPunch(req); assert(resp.success); std::cout << "TestPunchFunction passed.\n"; } // 测试 SRS-ATT_F-002: 考勤数据自动核算(简单验证不崩溃) void testAutoCalculate() { AttendanceSystem sys; // 正常情况下不应抛出异常 try { sys.autoCalculateAttendance(); std::cout << "TestAutoCalculate passed.\n"; } catch (...) { assert(false && "autoCalculate threw exception"); } } // 测试 SRS-ATT_F-003: 异常考勤预警(验证报警触发) void testWarning() { AttendanceSystem sys; CalculationResult res; res.employeeId = "EMP_WARN"; res.status = CalculationResult::LATE; // 只需确保函数执行不崩溃 sys.sendWarningForAnomaly(res); std::cout << "TestWarning passed.\n"; } // 测试 SRS-ATT_F-004: 考勤报表生成导出 void testReport() { AttendanceSystem sys; ReportQuery query; query.department = "TEST_DEPT"; query.startDate = 0; query.endDate = std::time(nullptr); query.format = ReportQuery::EXCEL; ReportFile file = sys.generateReport(query); assert(!file.fileName.empty()); std::cout << "TestReport passed.\n"; } // 测试 SRS-ATT_F-005: 第三方系统集成 void testThirdPartySync() { AttendanceSystem sys; ThirdPartySyncRequest req; req.apiKey = "VALID_API_KEY"; req.systemType = "HR"; SyncResponse resp = sys.syncWithThirdParty(req); assert(resp.success); std::cout << "TestThirdPartySync passed.\n"; } int main() { testPunchFunction(); testAutoCalculate(); testWarning(); testReport(); testThirdPartySync(); std::cout << "All tests passed!\n"; return 0; }