Skip to content
/ Midje Public
forked from marick/Midje

Midje provides a migration path from clojure.test to a more flexible, readable, abstract, and gracious style of testing

License

Notifications You must be signed in to change notification settings

bmabey/Midje

 
 

Repository files navigation

About Midje

Midje is a test framework for Clojure. I created it to support top-down as well as bottom-up testing, to encourage readable tests, to provide a smooth migration path from clojure.test, and to support a balance between abstraction and concreteness.

Here's a simple Midje test:

  (fact
     (numerical-reverser 103) => 301)

I call this a "fact" because, in a world without mutability, it just is a fact that the numerical-reverser of 103 is 301. Since I work test-first, I like to think of programming as making false claims about the world of the program, then changing that world to make the claims true.

I use the arrow because I think of tests as examples. When people show snippets of code as examples, they often use an arrow to separate what you type from what you should expect to see.

The object on the right-hand side of the arrow can be a function, in which case the value of the left-hand side is passed to it. So this is also a fact:

 (fact
   (numerical-reverser 103) => odd?)

Midje comes with a selection of predefined checkers that are more useful for testing than odd? is.

Midje's other useful features are described in the user guide. If anything there is unclear, ask in the mailing list. If you like videos of people programming, here's an 8-minute infomercial that concentrates on transitioning from clojure.test. If you like looking straight at code, this heavily annotated example has a bunch. If you want to run that example, you can download it:

  1. Click here.
  2. In a shell, go to the directory your browser unpacked the example into. It should be named examples.
  3. Go to examples/basic/.
  4. Type "./run" or "lein test".
  5. The facts in test/*/core_test.clj will be checked.

You can download everything to get more examples.

About

Midje provides a migration path from clojure.test to a more flexible, readable, abstract, and gracious style of testing

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Languages

  • Clojure 92.3%
  • Emacs Lisp 7.7%