# gRPC Testify (Rust)
<img align="right" width="150" height="150" src="https://github.com/user-attachments/assets/d331a8db-4f4c-4296-950c-86b91ea5540a">
[](https://coveralls.io/github/gripmock/grpctestify-rust?branch=master)
[](https://github.com/gripmock/grpctestify-rust/releases/latest)
[](https://gripmock.github.io/grpctestify-rust/)
[](https://marketplace.visualstudio.com/items?itemName=gripmock.grpctestify)
[](https://opensource.org/licenses/MIT)
Native CLI for gRPC testing with `.gctf` files.
## Documentation
- [Docs](https://gripmock.github.io/grpctestify-rust/)
- [Generator](https://gripmock.github.io/grpctestify-rust/generator)
- [Repository](https://github.com/gripmock/grpctestify-rust)
## Key Features
- Unary, client streaming, server streaming, and bidirectional streaming tests
- Assertions with built-in operators and plugin functions (`@header`, `@trailer`, `@uuid`, `@email`, etc.)
- Parallel execution, timeouts, coverage, snapshot mode (`--write`)
- Output formats: `console`, `json`, `junit`, `allure`
- Extra tools for developer workflows: `check`, `fmt`, `inspect`, `explain`, `reflect`, `lsp`
## Requirements
- No external runtime dependencies for CLI execution
- Docker is optional (for integration examples)
## Installation
### Homebrew (macOS and Linux)
```bash
brew tap gripmock/tap
brew install gripmock/tap/grpctestify
```
### Cargo
```bash
cargo install grpctestify
```
### Prebuilt binaries (GitHub Releases)
- Download from [GitHub Releases](https://github.com/gripmock/grpctestify-rust/releases/latest)
- Available for macOS, Linux, and Windows (amd64/arm64)
Verify installation:
```bash
grpctestify --version
```
## Quick Start
1. Create `hello.gctf`:
```gctf
--- ADDRESS ---
localhost:4770
--- ENDPOINT ---
hello.HelloService/SayHello
--- REQUEST ---
{
"name": "World"
}
--- ASSERTS ---
.message == "Hello, World!"
```
1. Run test:
```bash
grpctestify hello.gctf
```
## Common Commands
```bash
# Run tests
grpctestify tests/
# Parallel run
grpctestify tests/ --parallel 4
# JSON report
grpctestify tests/ --log-format json --log-output results.json
# JUnit report
grpctestify tests/ --log-format junit --log-output junit.xml
# Validate syntax
grpctestify check tests/**/*.gctf
# Format files
grpctestify fmt -w tests/**/*.gctf
```
## Contributing
Issues and PRs are welcome: [GitHub Issues](https://github.com/gripmock/grpctestify-rust/issues)
## License
[MIT](LICENSE)