[REBOL] Re: [TDD with run.r] Help needed please...
From: pwawood::gmail::com at: 9-May-2007 20:25
Hi Sash
I have been using RUnit and TDD development of Rebol scripts and find
it to be a very productive way of working.
Most of the xUnit testing frameworks aren't really designed for testing
GUI's. The general advice seems to be to separate as much of the
program logic as possible from the GUI so that it can be tested. Also
most of the test frameworks are designed for testing object methods
though of course RUnit can be used to test any named block of code.
So building on Anton's suggestion, for testability you could adopt an
approach along these lines :
my-gui-back-end: make object! [
button-maker: func [caption [string!] [
layout reduce ['button caption]
]
]
with a test file along these lines:
setup: does [
do %my-gui-back-end.r ;; load the object for testing
]
test1: does [
my-button: button-maker "click here"
assert object? my-button
]
test2: does [
my-button: button-maker "click here"
assert-equal button/style 'button
]
etc. etc,
(Apologies for any errors in the View code, I haven't really used it).
As for 100% test coverage of the code, it's good but isn't the
guarantee
some people seem to indicate. "Data coverage" is equally
important. For example, take this trivial function:
div: func [a b] [ a / b]
Now 100% code coverage is easy:
assert-equal div 2 1 2
but there is much more to test:
div "1" 2
div 1 0
and so one.
So for me a good set of unit tests is a balance between code and data
coverage.
Regards
Peter
On Wednesday, May 9, 2007, at 06:23 pm, Anton Rolls wrote: