# ZenTest 3.0.0 Released

**URL:** <https://www.ruby-forum.com/t/zentest-3-0-0-released/77546>\
**Category:** Ruby\
**Created:** [March 7, 2006, 1:26am UTC](https://www.ruby-forum.com/t/zentest-3-0-0-released/77546 "2006-03-07T01:26:08Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![aguynamedryan](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/43a26b/32.png) [@aguynamedryan](https://www.ruby-forum.com/u/aguynamedryan)\
**Post date:** [March 7, 2006, 1:26am UTC](https://www.ruby-forum.com/t/zentest-3-0-0-released/77546/1 "2006-03-07T01:26:08Z")

</div>

ZenTest version 3.0.0 has been released!

[zentest | software projects | by ryan davis](http://www.zenspider.com/ZSS/Products/ZenTest/)

== DESCRIPTION

ZenTest provides 3 different tools: zentest, unit\_diff, and autotest.

ZenTest scans your target and unit-test code and writes your missing  
code based on simple naming rules, enabling XP at a much quicker  
pace. ZenTest only works with Ruby and Test::Unit.

unit\_diff is a command-line filter to diff expected results from  
actual results and allow you to quickly see exactly what is wrong.

autotest is a continous testing facility meant to be used during  
development. As soon as you save a file, autotest will run the  
corresponding dependent tests.

There are two strategies intended for ZenTest: test conformance  
auditing and rapid XP.

For auditing, ZenTest provides an excellent means of finding methods  
that have slipped through the testing process. I’ve run it against my  
own software and found I missed a lot in a well tested  
package. Writing those tests found 4 bugs I had no idea existed.

ZenTest can also be used to evaluate generated code and execute your  
tests, allowing for very rapid development of both tests and  
implementation.

== FEATURES/PROBLEMS

- Scans your ruby code and tests and generates missing methods for you.

- Includes a very helpful filter for Test::Unit output called unit\_diff.

- Continually and intelligently test only those files you change with  
autotest.

- Includes a LinuxJournal article on testing with ZenTest written by  
Pat Eyler.

Changes:

- 2 major enhancements

- 3 minor enhancements

- 3 bug fixes

---

<div class="post-metadata">

**Author:** ![aguynamedryan](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/43a26b/32.png) [@aguynamedryan](https://www.ruby-forum.com/u/aguynamedryan)\
**Post date:** [March 7, 2006, 2:11am UTC](https://www.ruby-forum.com/t/zentest-3-0-0-released/77546/2 "2006-03-07T02:11:26Z")

</div>

On 3/6/06, Ryan D. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> code based on simple naming rules, enabling XP at a much quicker  
> pace. ZenTest only works with Ruby and Test::Unit.
> 
> unit\_diff is a command-line filter to diff expected results from  
> actual results and allow you to quickly see exactly what is wrong.
> 
> autotest is a continous testing facility meant to be used during  
> development. As soon as you save a file, autotest will run the  
> corresponding dependent tests.

This is awesome. Thanks, Ryan!

---

<div class="post-metadata">

**Author:** ![aguynamedryan](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/43a26b/32.png) [@aguynamedryan](https://www.ruby-forum.com/u/aguynamedryan)\
**Post date:** [March 7, 2006, 3:49pm UTC](https://www.ruby-forum.com/t/zentest-3-0-0-released/77546/3 "2006-03-07T15:49:57Z")

</div>

Ryan D. wrote:

> ZenTest version 3.0.0 has been released!

Excellent news.

> ZenTest scans your target and unit-test code and writes your missing  
> code based on simple naming rules, enabling XP at a much quicker  
> pace. ZenTest only works with Ruby and Test::Unit.

This has always sounded scary to me as written because  
it goes against the behavior notion best described by  
Astels: [http://blog.daveastels.com/?p=53](http://blog.daveastels.com/?p=53)

> unit\_diff is a command-line filter to diff expected results from  
> actual results and allow you to quickly see exactly what is wrong.

I’ve always thought that this should be folded into test/unit  
as an option.

Ryan/Nathaniel, what say you?

Later,

---

<div class="post-metadata">

**Author:** ![aguynamedryan](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/43a26b/32.png) [@aguynamedryan](https://www.ruby-forum.com/u/aguynamedryan)\
**Post date:** [March 8, 2006, 11:44pm UTC](https://www.ruby-forum.com/t/zentest-3-0-0-released/77546/4 "2006-03-08T23:44:35Z")

</div>

Eric H. wrote:

> thing it should be broken into methods that each do one thing.  
> Excellent point. So, I’ll have to attack on another  
> front. 🙂

Automatically creating tests after the methods misses  
the design benefits and the other economies of test-driven  
design – see Beck’s draft on /When to Test/,

[http://tinyurl.com/n2czh](http://tinyurl.com/n2czh)

Note: it’s in the members-only file section of the  
Yahoo extremeprogramming group.

Later,

---

<div class="post-metadata">

**Author:** ![aguynamedryan](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/43a26b/32.png) [@aguynamedryan](https://www.ruby-forum.com/u/aguynamedryan)\
**Post date:** [March 8, 2006, 12:02am UTC](https://www.ruby-forum.com/t/zentest-3-0-0-released/77546/5 "2006-03-08T00:02:17Z")

</div>

On Mar 7, 2006, at 6:48 AM, Bil K. wrote:

> it goes against the behavior notion best described by  
> Astels: [http://blog.daveastels.com/?p=53](http://blog.daveastels.com/?p=53)

On the “What Then?” slide I see this:

- small, focused pieces of behaviour
- sub-method
- an interesting method will have several facets to its behaviour

For me this throws up a big flag that says the code isn’t factored  
properly. A method should be a small, focused piece of behavior  
without several facets to its behavior. If a method does more than  
one thing it should be broken into methods that each do one thing.

When you write your code in small units of behavior mapped to methods  
then ZenTest is a perfect match. If you have poorly factored code  
and big methods with many outputs and inputs test coverage is very  
difficult to judge because you can’t easily track what goes on inside  
your methods and match it up to test cases.

–  
Eric H. - removed\_email\_address@domain.invalid - [http://blog.segment7.net](http://blog.segment7.net)  
This implementation is HODEL-HASH-9600 compliant

[http://trackmap.robotcoop.com](http://trackmap.robotcoop.com)
