{"id":46378,"url":"https://github.com/hoodie/awesome-rust-testing","name":"awesome-rust-testing","description":" 😎 Curated list of awesome things regarding Rust Testing","projects_count":78,"last_synced_at":"2026-08-03T19:00:21.746Z","repository":{"id":49585983,"uuid":"220977389","full_name":"hoodie/awesome-rust-testing","owner":"hoodie","description":" 😎 Curated list of awesome things regarding Rust Testing","archived":false,"fork":false,"pushed_at":"2026-03-30T23:13:05.000Z","size":34,"stargazers_count":199,"open_issues_count":4,"forks_count":5,"subscribers_count":8,"default_branch":"master","last_synced_at":"2026-07-15T14:04:08.332Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hoodie.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-11-11T12:32:55.000Z","updated_at":"2026-06-14T17:22:30.000Z","dependencies_parsed_at":"2024-08-18T02:00:55.554Z","dependency_job_id":"83762d2f-1473-4722-b9ee-17129038563a","html_url":"https://github.com/hoodie/awesome-rust-testing","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/hoodie/awesome-rust-testing","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hoodie%2Fawesome-rust-testing","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hoodie%2Fawesome-rust-testing/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hoodie%2Fawesome-rust-testing/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hoodie%2Fawesome-rust-testing/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hoodie","download_url":"https://codeload.github.com/hoodie/awesome-rust-testing/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hoodie%2Fawesome-rust-testing/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":36248511,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-07-20T02:08:10.276Z","status":"online","status_checked_at":"2026-08-03T02:00:06.975Z","response_time":56,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"created_at":"2024-01-14T11:14:57.057Z","updated_at":"2026-08-03T19:00:21.747Z","primary_language":null,"list_of_lists":false,"displayable":true,"categories":["Other Awesomes","Crates","Books","CI","BlogPosts","Talks","Patterns"],"sub_categories":["Testing CommandLine Applications","Mutation Testing","Extensions","Mocking","Coverage","Fuzzing","Matchers","Harnesses/Frameworks","More Cargo Tools","Snapshop Testing","Generated output matchers","[Diffing](https://crates.io/keywords/diff)","[Assertions](https://crates.io/keywords/assert)","FFI Testing","Parameterized Testing","Test Generation","Model Based Testing"],"readme":"# Awesome Rust Testing\n\n**WANT TO HELP??** please help up by adding more things or even better: evaluating the things on the list\n* Are the things still maintained? Can we add badges here? short descriptions? Quality Control\n\n## Books\n* [awesome-mdbook (general)](https://github.com/softprops/awesome-mdbook) \n* [PropTesting](https://altsysrq.github.io/proptest-book/intro.html)\n* [CommandLineApplications#testing](https://rust-lang-nursery.github.io/cli-wg/tutorial/testing.html)\n* [Fuzzing Book](https://rust-fuzz.github.io/book/)\n   \n## Crates\n\nTurns out, there is an entire subcategory on crates.io [Development tools::Testing](https://crates.io/categories/development-tools::testing)\n\n### Extensions\n* [rstest](https://github.com/la10736/rstest) - Fixture-based test framework for Rust\n* [ntest](https://github.com/becheran/ntest) - Testing framework for rust enhancing the built-in library with some useful features\n* [nextest](https://nexte.st/) - test runner\n* [assay](https://github.com/mgattozzi/assay) - super powered testing macro\n\n### Mocking\n* [MockAll](https://crates.io/crates/mockall) ([Examples](https://crates.io/crates/mockall_examples), [Derive Macro](https://crates.io/crates/mockall_derive))\n* [Mocktopus](https://crates.io/crates/mocktopus)\n* [mock_derive](https://crates.io/crates/mock_derive)\n* [mockers](https://crates.io/crates/mockers)\n* [simulacrum](https://crates.io/crates/simulacrum)\n* [Mockiato](https://crates.io/crates/mockiato)\n* [mockito](https://docs.rs/mockito/0.21.0/mockito/)(http mocks)\n* [faux](https://github.com/nrxus/faux)\n* [wiremock](https://crates.io/crates/wiremock)\n* [unimock](https://crates.io/crates/unimock)\n\n### Snapshop Testing\n\n* [Insta](https://crates.io/crates/insta) + [cargo-insta](https://crates.io/crates/cargo-insta)\n\n### Matchers\n\n* [matches](https://crates.io/crates/matches)\n* [assert matches](https://crates.io/crates/assert_matches)\n* [fuzzy matcher](https://crates.io/crates/fuzzy-matcher)\n* [try_match](https://crates.io/crates/try_match)\n* [K9](https://github.com/aaronabramov/k9)\n\n### Generated output matchers\n\n* [specker](https://crates.io/crates/specker) A framework to collect test inputs and expected outputs from multiple files and check them. Used to test code generation (last update 2017, *needs way more examples*)\n\n### [Diffing](https://crates.io/keywords/diff)\n* [prettydiff](https://crates.io/crates/prettydiff)\n* [differ](https://crates.io/crates/differ)\n\n### [Assertions](https://crates.io/keywords/assert)\n* [assert](https://crates.io/crates/assert)\n* [galvanic-assert](https://crates.io/crates/galvanic-assert)\n* [difference](https://crates.io/crates/difference)\n* [pretty_assertions](https://crates.io/crates/pretty_assertions)\n* [static assertions](https://crates.io/crates/static_assertions)\n* [spectral](https://crates.io/crates/spectral)\n* [assert_fs](https://crates.io/crates/assert_fs)\n\n### FFI Testing\n* [ctest](https://crates.io/crates/ctest)\n\n### Coverage\n\n* [tarpaulin](https://github.com/xd009642/tarpaulin)\n* [cargo-kcov](https://crates.io/crates/cargo-kcov)\n* [grcov](https://crates.io/crates/grcov)\n* [coverage marks](https://ferrous-systems.com/blog/coverage-marks/)\n\n\n### Fuzzing\n* see the book section\n* [afl.rs](https://github.com/rust-fuzz/afl.rs)\n* [cargo-fuzz](https://crates.io/crates/cargo-fuzz)\n* [honggfuzz](https://crates.io/crates/honggfuzz)\n\n### Property Testing\n* https://crates.io/crates/quickcheck https://crates.io/crates/quickcheck_macros\n\n* https://crates.io/crates/proptest https://crates.io/crates/proptest-derive\n\n### Parameterized Testing\n* [test-case](https://crates.io/crates/test-case)\n\n### Mutation Testing\n\n* [mutagem](https://crates.io/crates/mutagen)\n* [cargo-mutants](https://github.com/sourcefrog/cargo-mutants)\n* [bough](https://github.com/CodeEnPlace/bough)\n\n### Harnesses/Frameworks\n\n* [rspec](https://crates.io/crates/rspec)  [![Build Status](https://travis-ci.org/rust-rspec/rspec.svg?branch=master)](https://travis-ci.org/rust-rspec/rspec) [![Coverage Status](https://coveralls.io/repos/github/rust-rspec/rspec/badge.svg)](https://coveralls.io/github/rust-rspec/rspec) [![Crates.io](https://img.shields.io/crates/v/rspec.svg?maxAge=2592000)](https://crates.io/crates/rspec) [![Crates.io](https://img.shields.io/crates/l/rspec.svg?maxAge=2592000)](https://github.com/rust-rspec/rspec/blob/master/LICENSE)\n* [speculate](https://crates.io/crates/speculate) [![Build Status](https://travis-ci.org/utkarshkukreti/speculate.rs.svg?branch=master)](https://travis-ci.org/utkarshkukreti/speculate.rs) [![speculate at crates.io](https://img.shields.io/crates/v/speculate.svg)](https://crates.io/crates/speculate)\n* [Shiny](https://github.com/farcaller/shiny) (last commit 2016)\n* [rstest](https://github.com/la10736/rstest) *a Fixture based Testing Framwork*\n\n### Test Generation\n\n* [test-generator](https://crates.io/crates/test-generator) creates tests based on files\n\n### Model Based Testing\n\n* [model](https://crates.io/crates/model)\n\n### Testing Webservices\n\n* https://crates.io/crates/drill\n\n\n### More Cargo Tools\n* Testing feature combinations: [cargo featomatic](https://github.com/Nemo157/cargo-featomatic) (incomplete, help welcome)\n* \"Testing\" licenses [https://github.com/Nemo157/cargo-lichking](https://github.com/Nemo157/cargo-lichking)\n* Look for possible security vulnerabilities: https://github.com/RustSec/cargo-audit\n\n### Testing Documentation\n* https://crates.io/crates/skeptic\n* https://crates.io/crates/docmatic\n\n### Testing CommandLine Applications\n* https://crates.io/crates/assert_cmd\n* [assert_cli](https://crates.io/crates/assert_cli): the sucessor is [assert_cmd](https://crates.io/crates/assert_cmd)\n\n## CI\n\n* [crate-ci book](https://crate-ci.github.io/) contains general suggestions on maintaining high crate quality\n* [Azure Pipelines](https://crate-ci.github.io/azure-pipelines/) contains great templates for cross-platform testing\n\n## BlogPosts\n* [How Rust is Tested](https://brson.github.io/2017/07/10/how-rust-is-tested)\n* **[Mocking libraries comparison](https://asomers.github.io/mock_shootout/)**\n* [On Mocking Rust](https://tech.labs.oliverwyman.com/blog/2018/05/21/on-mocking-rust/)\n* [Mocking in Rust with conditional compilation](https://klau.si/blog/mocking-in-rust-with-conditional-compilation/)\n* [How to Mock Time in Rust Tests and Cargo Gotchas We Met](https://blog.iany.me/2019/03/how-to-mock-time-in-rust-tests-and-cargo-gotchas-we-met/)\n* [Kcov and tarpaulin code coverage](https://blog.knoldus.com/bid-adieu-to-tarpaulin-html-reports-are-here-for-rust/)\n* [Tutorial: How to collect test coverages for Rust project](https://users.rust-lang.org/t/tutorial-how-to-collect-test-coverages-for-rust-project/650/14)\n* [Rust Code Coverage Guide: kcov + Travis CI + Codecov / Coveralls](https://sunjay.dev/2016/07/25/rust-code-coverage)\n* [Performance Testing on Travis CI](https://beachape.com/blog/2016/11/02/rust-performance-testing-on-travis-ci/)\n* [Coverage with kcov + Travis CI + Codecov / Coveralls](https://sunjay.dev/2016/07/25/rust-code-coverage)\n* [Testing a Rust Command Line Tool](https://mattgathu.github.io/testing-rust-cli-apps/)(for [assert_cli](https://crates.io/crates/assert_cli))\n* [Rust Mutation Testing](https://llogiq.github.io/2016/03/24/mutest.html)(for [mutagem](https://crates.io/crates/mutagen))\n* [Testing With Unused Arguments](https://llogiq.github.io/2015/08/17/test.html)\n\n## Talks\n* [Testing strategies and pattern for efficient TDD in Rust by Thomas Wickham](https://www.youtube.com/watch?v=U3F7uAOCjEo)\n\n## Patterns\n* [entrait](https://crates.io/crates/entrait)\n\n## Other Awesomes\n\n* [zonyitoo awesome#testing](https://github.com/zonyitoo/awesome-rust#testing)\n* [rust-unofficial awesome#testing](https://github.com/rust-unofficial/awesome-rust#testing)\n* [for completenes, this one has no testing section](https://github.com/queenypingcap/awesome-rust)\n* [rust learning:ci/testing](https://github.com/ctjhoa/rust-learning#ci--testing)\n* [eRFC 2318: custom tests frameworks](https://github.com/rust-lang/rust/issues/50297)\n","projects_url":"https://awesome.ecosyste.ms/api/v1/lists/hoodie%2Fawesome-rust-testing/projects"}