2 releases
0.0.2 | Oct 14, 2021 |
---|---|
0.0.1 | Oct 13, 2021 |
0.0.0 |
|
#830 in Testing
19KB
351 lines
RsUnit
RsUnit is a unit testing framework for Rust. It's a wrapper around the native cargo test
interface. RsUnit mimics the structure and behavior of ExUnit.
Structure
A test suite is always wrapped in a rs_unit
block. Inside this rs_unit
block can be multiple describe
blocks. A describe
block is used to group related tests. The essence of RsUnit is the describe
block. This block consists of three parts; a setup
, test
and teardown
part. The setup
and teardown
are optional. The only required part is test
.
Setup
The setup
block contains logic that is run before the tests. Here we differentiate between setup
and setup_all
. The setup
block is run with every test. The setup_all
block is executed a single time, before every test. Database or drive setups are use cases for the setup
block.
Test
Each describe
block contain multiple test
blocks. There is no limit but keep in mind to keep your tests as short as possible.
Teardown
The teardown
block is run after the tests. Similar to the setup
blocks, you have the choice between teardown
and teardown_all
. A typical use case is for example the removal of the database or folders that were created in the setup
block.
Example
use rs_unit::rs_unit;
pub fn add_number(number_one: i32, number_two: i32) -> i32 {
number_one + number_two
}
rs_unit! {
describe "add_number/2" {
test "success: Add two numbers" {
let result = add_number(1, 1);
assert_eq!(result, 2);
}
}
}
Special thanks
I want to thank NyxCode and Yandros FR-ES from Discord and rodrimati1992 for helping me to better understand how procedural macros are working, having patience and pointing me into the right direction.
License
MIT License - Copyright (c) 2021 Marius Wilms
Dependencies
~1.5MB
~35K SLoC