#test-framework #unit-testing #framework #functional #syntax #assertions

bin+lib qutonium

simplify unit testing with a functional testing framework 📈

8 releases

0.1.6 Nov 17, 2020
0.1.5 Nov 17, 2020
0.1.1 Oct 30, 2020
0.0.0 Oct 5, 2020

#360 in Testing

29 downloads per month

MIT license

36KB
1K SLoC

qutonium

github crates.io docs.rs Crates.io


simplify unit testing with a minimal testing framework 📈

DISCLAIMER

qutonium is takes is inspiration from the rust-testing-microframework. the goal is to provide a minimal testing framework for assertions (see the list of features here). the project is still in work in progress so.. DO NOT USE IN PRODUCTION. DO NOT USE IN PRODUCTION. DO NOT USE IN PRODUCTION. feedbacks appreciated!

Examples

more examples here

basic syntax

fn main () {}

#[cfg(test)]
mod tests {
  extern crate qutonium;
  use qutonium::prelude::*;

  #[test]
  fn from_test () {
    suite!("the suite case name ~basic", {
      "compare integer" || {
        expect!(2 + 2).to(be_equal(4));
      }
    });
  }
}

sugar syntax

fn main () {}

#[cfg(test)]
mod tests {
  extern crate qutonium;
  use qutonium::prelude::*;

  #[test]
  fn from_test () {
    suite!("the suite case name ~sugar", {
      "compare integer" || {
        must!(2 + 2; be 4);
      }
    });
  }
}

Overview

stdout

The output format follow the syntax from crystal | ruby. s/o Siegfried Ehret

SUITE the suite case name
  TEST compare integer (0ms)
    ERROR
       👎 received: <0> expected: <1>
       📍 src/main.rs:7:7
    END
  END
  TEST compare boolean (0ms)
    SUCCESS
       👍 ok
       📍 src/main.rs:12:7
    END
  END
  TEST testing should panic (0ms)
    SUCCESS
       👍 ok
       📍 src/main.rs:16:7
    END
  END
END

DIAGNOSTIC
  👎 failed: 1   👍 passed: 2   📈 total: 3
END

Usage

Add the following to your Cargo.toml:

[dependencies]
qutonium = "0.1.3"

Goals

  • describe suite case | suite!
  • test function |
  • assertions | expect
  • marker | not & to
  • matchers | see the complete list here
  • extended matchers
  • custom matchers
  • diagnostics
  • error location
  • helpful error messages
  • sugar syntax
  • no nested suites
  • inline stdout
  • colorized terminal output | using qute crate
  • snapshot diff | using differences crate
  • extended matchers
  • hooks | before:all, before:each, after:all and after:each
  • export json, xml | generic execution format for sonar (xml only)
  • Exclude test cases | skip and only
  • store | state container
  • should panic can be testing
  • writing unit testing
  • documentation

API

Exports

json

handler snippet
to_json see more informations about the export here

Markers

marker snippet
to expect!(expr).to(matcher)
not expect!(expr).not(matcher)

Matchers

boolean

matcher snippet
be_false expect!(expr).to(be_false())
be_true expect!(expr).to(be_true())

common

matcher snippet
be_equal expect!(expr).to(be_equal(expr))

License

Copyright Šī¸ 2020 Qurity

Released under the MIT license

Dependencies

~0.5–1MB
~22K SLoC