- Date: December 13, 2015
- Subject: Testing and benchmarking, and compiler attributes.
All about testing in Rust! In order, we take a look at:
- Why you need tests.
- Unit tests in other (dynamically-typed) languages vs. in Rust.
- How to write unit tests in Rust.
- How and why to write integration tests in Rust.
- How and why to use benchmarks in Rust.
The detailed code samples for this episode are heavy on showing; because of
the nature of test functions, you will be best off just reading the source
rather than leaning heavily on the descriptions generated by rustdoc.
(The descriptions are still there, but they're much less useful than they
have been in previous episodes.) In particular, the
test module here is
excluded because of the use of the
#[cfg(test)] attribute marker on it.
Because we are using the feature-gated benchmarking functionality, the show notes "library" can now only be compiled with the Rust nightly (as of 1.5, the version current as this episode is produced).
One thing that isn't necessarily obvious from reading the test documentation
in the Rust book and Rust reference: the
extern crate test statement needs
to be not in this module, but at the module (
lib.rs) which defines the
library/crate; in this case,
- Rust Book:
- Rust reference: Attributes
- Diesel (Rust ORM)
- Chris Palmer
- Derek Morr
- Luca Schmid
- Micael Bergeron
- Ralph Giles ("rillian")
- William Roe
A trivial function for a trivial test. See the source!