Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I find this pretty nice in D. You add unittest{} blocks which you compile into or out of your binary with a compiler flag. If you add some appropriately formatted comments, ddoc also turns those into docstrings with the test as example usage.

https://dlang.org/spec/unittest.html



Rust takes a similar approach. For unit tests, you use the #[cfg(test)] attribute (/ pragma / directive) for conditional compilation, and #[test] to mark a function that is a unit test, which is run whenever you run the `cargo test` command. Also, any Rust code in Markdown fences in documentation is, by default, also run by `cargo test`, which you can disable for an individual code block by marking it as `rust,norun` instead of `rust`.


Shameless plug: you can have D-ish testing blocks with a macro I published on https://crates.io as `adhesion`: https://github.com/erichdongubler/adhesion-rs




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: