Test::Unit: multiple level of testing

D

David Garamond

I'd like to get suggestions on how to use Test::Unit to fulfill the
following requirement simply and elegantly:

Each component (basically a Class, which most of the time reside in a
single source file) will have a unit test. There should be three levels
of unit testing:

1) normal level, which will be executed regularly during development.
This is basically "the" unit test as we usually understand and use. It
should do functional and regression testing for each and every method,
to make sure each functionality is implemented correctly and past bugs
do not creep in again.

2) diagnostic level, which will usually be executed if there is
something wrong going on. This level should include all tests from the
normal level, but the output/error messages should be more verbose than
level #1 (under normal circumstances, the verbosity of output/error
messages from #2 is more than necessary). Additionally, this level
should also include things like memory leak test, some performance test,
etc.

3) same as #2, but more verbose and rigorous. We don't normally run
tests at these level unless there is problem that can't be tracked using
#1 and #2.
 
S

Simon Strandgaard

I'd like to get suggestions on how to use Test::Unit to fulfill the
following requirement simply and elegantly:
[snip]
1) normal level,
2) diagnostic level,
3) same as #2, but more verbose and rigorous.

May I suggest that you have 3 files which does test_all, but with the
above levels of debugging enabled.

My test_all file does verbose integrity checks.. but doesn't output
anything. Its better to do too many tests than too few, watch out having 3
levels of tests.

Though I usually have 2 levels of console-output.. verbose and normal

# FILE='common.rb'
class TestCase < Test::Unit::TestCase
def self.run
require 'test/unit/ui/console/testrunner'
Test::Unit::UI::Console::TestRunner.run(self, Test::Unit::UI::VERBOSE)
end
end

# FILE='test_helloworld.rb'
require 'common'
class TestScanner < Common::TestCase
def test_hello1
end
end
TestScanner.run if $0 == __FILE__


So that when I invoke the 'test_helloworld.rb' I get verbose output.
When I invoke 'test_all' I get normal output
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,769
Messages
2,569,582
Members
45,057
Latest member
KetoBeezACVGummies

Latest Threads

Top