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. 

Midje's tests look like the sort of examples shown in books like /The Joy of 
Clojure/. Here's the second example from page 97 of that book:

    (clojure.set/difference #{1 2 3 4} #{3 4 5 6})
    ;=> #{1 2}

Here's the same thing, in Midje:

    (fact
       (clojure.set/difference #{1 2 3 4} #{3 4 5 6})
       => #{1 2})


The 1.1 release of Midje is now out. This release is mostly about small touches 
to improve ease-of-use. For example, syntax errors are beginning to be handled 
more graciously, and line numbers are guessed better for some peculiar cases. 
Also:

You can now more clearly express what must not be true:
   (fact (+ 1 1) =not=> odd?)
https://github.com/marick/Midje/wiki/Negating-arrows

You can now mark pending facts in one more way. In addition to:
    (future-fact
        (sqrt 4) => 2
        (sqrt -1) => i)
You can mark individual checks:
    (fact
        (sqrt 4) => 2
        (sqrt -1) =future=> i)
https://github.com/marick/Midje/wiki/Future-facts

Midje allows you to have facts about one function depend upon facts about an 
as-yet-unwritten function:
    (fact (f 1) => 33
            (provided (g 1) => 22))
The `provided` clause can now contain complicated function calls like this:
    (fact (f 1) => 33
            (provided (g (h 1) 3 (h (i (h 1)))) => 22)
https://github.com/marick/Midje/wiki/Folded-prerequisites

There's a shorthand for cases where you want a depended-upon function to return 
different values each time it's called:
     (fact (severity input) => :high
              (provided (error-count) =streams=> (range)))
https://github.com/marick/Midje/wiki/Using-stateful-functions-as-prerequisites

-----
Brian Marick, Artisanal Labrador
Contract programming in Ruby and Clojure
Author of /Ring/ (forthcoming; sample: http://exampler.com/tmp/ring.pdf)
www.exampler.com, www.exampler.com/blog, www.twitter.com/marick

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to