Initial commit
This commit is contained in:
144
srcs/RobotNet10/Tests/RobotNet10.RobotManager.Test/README.md
Normal file
144
srcs/RobotNet10/Tests/RobotNet10.RobotManager.Test/README.md
Normal file
@@ -0,0 +1,144 @@
|
||||
# Unit Tests - RobotNet10.RobotManager
|
||||
|
||||
Thư mục này chứa các unit tests cho Robot Management module.
|
||||
|
||||
## 📁 Cấu trúc Tests
|
||||
|
||||
```
|
||||
RobotNet10.RobotManager.Test/
|
||||
├── Helpers/
|
||||
│ └── TestHelpers.cs # Helper methods để tạo test data
|
||||
├── Services/
|
||||
│ ├── RobotModelServiceTests.cs # Tests cho RobotModelService
|
||||
│ ├── RobotServiceTests.cs # Tests cho RobotService
|
||||
│ └── RobotModelImageStorageServiceTests.cs # Tests cho Image Storage Service
|
||||
├── README.md # File này
|
||||
└── RobotNet10.RobotManager.Test.csproj
|
||||
```
|
||||
|
||||
## 🧪 Test Coverage
|
||||
|
||||
### ✅ Đã được test
|
||||
|
||||
1. **RobotModelService**
|
||||
- CreateAsync với valid data
|
||||
- CreateAsync với duplicate model name (throws exception)
|
||||
- GetAllAsync
|
||||
- GetByIdAsync (existing và non-existent)
|
||||
- UpdateAsync (valid data và non-existent ID)
|
||||
- DeleteAsync (existing, non-existent, và model với robots)
|
||||
- SearchAsync
|
||||
- ExistsAsync
|
||||
- GetUsageInfoAsync
|
||||
|
||||
2. **RobotService**
|
||||
- CreateAsync với valid data
|
||||
- CreateAsync với duplicate robot ID (throws exception)
|
||||
- CreateAsync với non-existent model ID (throws exception)
|
||||
- GetAllAsync (với và không có filters)
|
||||
- GetByIdAsync
|
||||
- GetByRobotIdAsync
|
||||
- UpdateAsync
|
||||
- DeleteAsync
|
||||
- GetByModelIdAsync
|
||||
- SearchAsync
|
||||
- ExistsAsync
|
||||
|
||||
3. **RobotModelImageStorageService**
|
||||
- SaveImageAsync
|
||||
- GetImageAsync
|
||||
- DeleteImageAsync
|
||||
- ImageExistsAsync
|
||||
- GetImageDimensionsAsync
|
||||
|
||||
## 🚀 Chạy Tests
|
||||
|
||||
### Sử dụng Visual Studio
|
||||
1. Mở Test Explorer (Test → Test Explorer)
|
||||
2. Build solution
|
||||
3. Chọn tests cần chạy và click "Run"
|
||||
|
||||
### Sử dụng dotnet CLI
|
||||
```bash
|
||||
cd srcs/RobotNet10/Tests/RobotNet10.RobotManager.Test
|
||||
dotnet test
|
||||
```
|
||||
|
||||
### Chạy tests cụ thể
|
||||
```bash
|
||||
# Chạy tests trong một class
|
||||
dotnet test --filter "FullyQualifiedName~RobotModelServiceTests"
|
||||
|
||||
# Chạy một test method cụ thể
|
||||
dotnet test --filter "FullyQualifiedName~CreateAsync_ValidData_ReturnsCreatedRobotModel"
|
||||
```
|
||||
|
||||
### Chạy với output chi tiết
|
||||
```bash
|
||||
dotnet test --verbosity normal
|
||||
```
|
||||
|
||||
### Chạy với code coverage
|
||||
```bash
|
||||
dotnet test --collect:"XPlat Code Coverage"
|
||||
```
|
||||
|
||||
## 📊 Test Statistics
|
||||
|
||||
- **Total Tests**: ~30+ test cases
|
||||
- **Test Framework**: NUnit
|
||||
- **Coverage Areas**:
|
||||
- RobotModelService: CRUD operations, validation, business rules
|
||||
- RobotService: CRUD operations, validation, filtering
|
||||
- RobotModelImageStorageService: File operations
|
||||
|
||||
## 🛠️ Test Helpers
|
||||
|
||||
`TestHelpers.cs` cung cấp các helper methods để tạo test data:
|
||||
|
||||
- `CreateTestRobotModel()` - Tạo RobotModel entity với các parameters tùy chọn
|
||||
- `CreateTestRobot()` - Tạo Robot entity với các parameters tùy chọn
|
||||
- `SeedTestData()` - Seed test data vào database context
|
||||
|
||||
## 📝 Best Practices
|
||||
|
||||
1. **AAA Pattern**: Arrange, Act, Assert
|
||||
2. **Test Isolation**: Mỗi test độc lập, sử dụng InMemory database riêng
|
||||
3. **Meaningful Names**: Tên test mô tả rõ behavior được test
|
||||
4. **Test Data**: Sử dụng TestHelpers để tạo consistent test data
|
||||
5. **Edge Cases**: Test cả success và failure scenarios
|
||||
|
||||
## 🔍 Test Categories
|
||||
|
||||
### Unit Tests
|
||||
- Test từng service riêng biệt
|
||||
- Sử dụng InMemory database để test database operations
|
||||
- Mock external dependencies (IWebHostEnvironment, ILogger)
|
||||
- Fast execution
|
||||
|
||||
### Integration Tests (Future)
|
||||
- Test interaction giữa các components
|
||||
- Test với real database (optional)
|
||||
- Test end-to-end scenarios
|
||||
|
||||
## 📈 Coverage Goals
|
||||
|
||||
- [x] RobotModelService: Core methods ~90%
|
||||
- [x] RobotService: Core methods ~90%
|
||||
- [x] RobotModelImageStorageService: File operations ~80%
|
||||
- [ ] Controllers: Pending (có thể thêm sau)
|
||||
- [ ] SignalR Hub: Pending (cần integration test)
|
||||
|
||||
## 🐛 Known Issues
|
||||
|
||||
- Image dimension tests sử dụng invalid image data (cần valid PNG để test đầy đủ)
|
||||
- Controller tests chưa được implement (có thể thêm sau với integration tests)
|
||||
|
||||
## 🤝 Contributing
|
||||
|
||||
Khi thêm tests mới:
|
||||
|
||||
1. Follow naming convention: `MethodName_Scenario_ExpectedBehavior`
|
||||
2. Sử dụng TestHelpers cho test data
|
||||
3. Đảm bảo test isolation (mỗi test có database riêng)
|
||||
4. Test cả success và failure cases
|
||||
Reference in New Issue
Block a user