base32h.rb
datadriven
base32h.rb | datadriven | |
---|---|---|
1 | 2 | |
1 | 39 | |
- | - | |
10.0 | 2.0 | |
over 3 years ago | 2 months ago | |
Ruby | Go | |
ISC License | Apache License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
base32h.rb
-
Prefer table driven tests (2019)
I'm fond of taking this a step further and actually offloading the test cases to a separate language-agnostic file, then have implementations' test harnesses read cases from that file. The Ruby gem for Base32H¹ does exactly this to test the encoder/decoder logic, pulling the test cases from CSV files in a separate repo² included as a Git submodule. One of these days I need to port the other reference implementations over to using the tests repo, but once that's done I'll be able to update the test cases in one place and they'll automatically work everywhere.
----
¹ https://github.com/Base32H/base32h.rb/tree/master/spec
² https://github.com/Base32H/base32h-tests
datadriven
-
Prefer table driven tests (2019)
Table driven tests are a lot better than a bunch of imperative tests but they rapidly become unwieldy to debug, maintain, and evolve. Their readability often isn’t great.
If you’re using go, check out https://github.com/cockroachdb/datadriven. It takes a little bit of effort to craft a testing dsl, but it is so worth it.
Also, snapshot style testing where the test writes out its expectations and you just inspect it and save it (part of datadriven) is wonderful.
I’ve been using insta in rust lately and it’s some of what I want but not quite datadriven.
-
Ask HN: What's your favorite software testing framework and why?
I’ve found the datadriven[1] testing approach in go to be quite effective. The idea is that you leverage a standardized file structure to construct a little DSL for testing your code. This allows you to write expressive tests that print the state of the code and then look at it. Rewrite is also very powerful.
This is all inspired by the sqllite logic test framework.
[1]: https://github.com/cockroachdb/datadriven
What are some alternatives?
American Fuzzy Lop - american fuzzy lop - a security-oriented fuzzer
jsverify - Write powerful and concise tests. Property-based testing for JavaScript. Like QuickCheck.
rapid - Rapid is a modern Go property-based testing library
greenlight - Clojure integration testing framework
base32h-tests - Base32H Test Suite
testy - test helpers for more meaningful, readable, and fluent tests
embedded-postgres - Java embedded PostgreSQL component for testing
ospec - Noiseless testing framework
LazySmallCheck2012 - Lazy SmallCheck with functional values and existentials!
ava - Node.js test runner that lets you develop with confidence 🚀