| name | testing-strategies |
| description | >- Use when this capability is needed. |
Testing Strategies
When to Use This Skill
A well-tested CLI uses different testing strategies at different levels. This section covers:
Implementation
See the full implementation guide in the source documentation.
Key Principles
| Practice | Description |
|---|
| Interface first | Design for testability with interfaces |
| Table-driven tests | Cover edge cases systematically |
| Parallel tests | Use t.Parallel() where safe |
| Build tags | Separate integration tests with //go:build integration |
| Clean up | Always clean up test resources |
Test at the right level. Unit tests catch logic bugs. Integration tests catch API issues. E2E tests catch workflow bugs.
Techniques
Overview
A well-tested CLI uses different testing strategies at different levels. This section covers:
Testing Pyramid
graph TB
E2E[E2E Tests<br/>Full workflow in real cluster]
Integration[Integration Tests<br/>Real API server with kind/envtest]
Unit[Unit Tests<br/>Fake clients and mock interfaces]
E2E --> Integration --> Unit
%% Ghostty Hardcore Theme
style E2E fill:#9e6ffe,color:#1b1d1e
style Integration fill:#65d9ef,color:#1b1d1e
style Unit fill:#a7e22e,color:#1b1d1e
Test Organization
myctl/
├── cmd/
│ ├── check.go
│ └── check_test.go # Command tests
├── pkg/
│ ├── k8s/
│ │ ├── client.go
│ │ ├── client_test.go # Unit tests with fakes
│ │ └── fake_client.go # Test doubles
│ └── selector/
│ ├── selector.go
│ └── selector_test.go
└── test/
├── e2e/ # E2E tests
└── fixtures/ # Test resources
Makefile Targets
.PHONY: test test-unit test-integration test-e2e
test: test-unit
test-unit:
go test -v -race ./...
test-integration:
go test -v -tags=integration ./pkg/...
test-e2e:
./test/e2e/run.sh
Best Practices
| Practice | Description |
|---|
| Interface first | Design for testability with interfaces |
| Table-driven tests | Cover edge cases systematically |
| Parallel tests | Use t.Parallel() where safe |
| Build tags | Separate integration tests with //go:build integration |
| Clean up | Always clean up test resources |
Test at the right level. Unit tests catch logic bugs. Integration tests catch API issues. E2E tests catch workflow bugs.
Examples
See examples.md for code examples.
References
Converted and distributed by TomeVault — claim your Tome and manage your conversions.