4.4 KiB
4.4 KiB
Unit Tests - RobotNet10.GlobalPathPlanner
Thư mục này chứa các unit tests cho project RobotNet10.GlobalPathPlanner.
📁 Cấu trúc Tests
RobotNet10.GlobalPathPlanner.Test/
├── TestHelpers.cs # Helper methods để tạo test data
├── PathPlannerFactoryTests.cs # Tests cho PathPlannerFactory
├── DifferentialPlannerTests.cs # Tests cho DifferentialPlanner
├── GlobalNodeTests.cs # Tests cho GlobalNode model
├── GlobalEdgeTests.cs # Tests cho GlobalEdge model
├── PathPlannerOptionsTests.cs # Tests cho PathPlannerOptions
├── OrientationTests.cs # Tests cho Orientation enum
├── IPathPlannerTests.cs # Tests cho IPathPlanner interface
├── README.md # File này
└── HOW_TO_RUN_TESTS.md # Hướng dẫn chi tiết chạy tests
🧪 Test Coverage
✅ Đã được test
-
PathPlannerFactory
- Tạo các loại planner khác nhau
- Kiểm tra instance types
- Kiểm tra mỗi lần tạo là instance mới
-
DifferentialPlanner
- SetData và SetOptions
- PathPlanning từ tọa độ
- PathPlanning từ Node ID
- PathPlanning với direction constraints
- PathPlanning với angle constraints
- Error handling (invalid goal, disconnected graph)
- Timeout và cancellation
- Edge cases (same start/goal, empty arrays)
-
GlobalNode
- DistanceTo calculations
- Property setters
- ToString method
-
GlobalEdge
- Property setters
- Record equality
- Degree values (1, 2, 3)
-
PathPlannerOptions
- Default values
- Property setters
- Record equality
- TimeOut handling
-
Orientation
- Enum values
- Assignment to nodes
-
IPathPlanner Interface
- Interface contract
- Method implementations
🚀 Chạy Tests
Sử dụng Visual Studio
- Mở Test Explorer (Test → Test Explorer)
- Build solution
- Chọn tests cần chạy và click "Run"
Sử dụng dotnet CLI
cd srcs/RobotNet10/Tests/RobotNet10.GlobalPathPlanner.Test
dotnet test
Chạy tests cụ thể
dotnet test --filter "FullyQualifiedName~DifferentialPlannerTests"
📊 Test Statistics
- Total Tests: ~40+ test cases
- Test Framework: xUnit
- Coverage Areas:
- Factory pattern
- Path planning algorithms
- Data models
- Error handling
- Edge cases
🛠️ Test Helpers
TestHelpers.cs cung cấp các helper methods để tạo test data:
CreateSimpleLinearGraph()- Graph đơn giản 3 nodes thẳng hàngCreateSquareGraph()- Graph hình vuông 4 nodesCreateDisconnectedGraph()- Graph không liên thông (để test error cases)CreateBezierCurveGraph()- Graph với Bezier curves
📝 Best Practices
- AAA Pattern: Arrange, Act, Assert
- Test Isolation: Mỗi test độc lập, không phụ thuộc vào test khác
- Meaningful Names: Tên test mô tả rõ behavior được test
- Test Data: Sử dụng TestHelpers để tạo consistent test data
- Edge Cases: Test cả success và failure scenarios
🔍 Test Categories
Unit Tests
- Test từng component riêng biệt
- Mock dependencies nếu cần
- Fast execution
Integration Tests (Future)
- Test interaction giữa các components
- Test với real data
- Test end-to-end scenarios
📈 Coverage Goals
- PathPlannerFactory: 100%
- DifferentialPlanner core methods: ~90%
- Data models: 100%
- ForkliftPlanner: Pending
- ForkliftPlannerV2: Pending
- AStarPlanner: Pending
- MathExtensions: Pending
🐛 Known Issues
- Timeout tests có thể không consistent trên các hệ thống khác nhau
- Một số tests phụ thuộc vào performance của A* algorithm
🤝 Contributing
Khi thêm tests mới:
- Follow naming convention:
MethodName_Scenario_ExpectedBehavior - Sử dụng TestHelpers cho test data
- Thêm comments cho complex test cases
- Đảm bảo tests chạy độc lập