R. Mark Volkmann
6/30/2005 12:55:00 AM
Quoting Joe Van Dyk <joevandyk@gmail.com>:
> On 6/29/05, R. Mark Volkmann <mark@ociweb.com> wrote:
> > Quoting Joe Van Dyk <joevandyk@gmail.com>:
> >
> > > On 6/29/05, gabriele renzi <surrender_it@remove-yahoo.it> wrote:
> > > > Joe Van Dyk ha scritto:
> > > > > Hi,
> > > > >
> > > > > If I have a bunch of unit tests that all require 'test/unit', what's
> > > > > the best way to run all those unit tests in a graphical test runner?
> > > >
> > > > I think if you do
> > > > ruby testfile.rb --help
> > > > you shopuld be able to see some gui options, i.e. --fox or --gtk
> > > >
> > > > HTH
> > >
> > >
> > > Thanks, I'll try that out.
> > >
> > > Currently, the file that runs all the unit tests looks something like
> > > (from memory)
> > >
> > > Dir["tests/*.rb].each { |file| require file }
> >
> > Can it really be that simple? I thought you'd have to do something like
> this.
> >
> > # This runs a suite of unit tests.
> > # Copy it to some directory in $PATH such as $RUBY_HOME/bin.
> > # Run it from your project lib directory where the unit test files
> > # are in a sibling directory named 'test'.
> > # Usage: ruby suite.rb [gui]
> >
> > if ARGV[0] == 'gui'
> > # Note: The one-click installer doesn't install Fox, GTK or GTK2.
> > require 'test/unit/ui/tk/testrunner'
> > $runner = Test::Unit::UI::Tk::TestRunner
> > else
> > require 'test/unit/ui/console/testrunner'
> > $runner = Test::Unit::UI::Console::TestRunner
> > end
> >
> > Dir.foreach('../test') do |filename|
> > next if not filename =~ /(\S*Test).rb$/
> > require "../test/#{filename}"
> > klass = Object.const_get($1)
> > $runner.run(klass)
> > end
>
> It's that simple, at least for me.
>
> That one line is all that's in unit_tests.rb, which I run with 'ruby
> unit_tests.rb'.
>
> Then, in the tests directory are a bunch of files like
>
> require 'test/unit'
> require 'what_i_am_testing'
>
> class MyTestClass < Test::Unit::TestCase
> def test_blah
> # ...
> end
> end
>
>
> It's very nice not to have to do any other crufty setup-type things to
> run unit tests. And so my question was how can I easily modify my
> current way of unit tests to run tests in a graphical mode.
I have a feeling the only reason it is so simple for you it that it uses
Test::Unit::UI::Console::TestRunner by default. I think in order to run test
in graphical mode you're going to have to do something like I did to
specifically tell it to use Test::Unit::UI::Tk::TestRunner or one of the other
GUI TestRunners. Of course I'd love it if someone could show us a simpler way
than what I have done.
--
R. Mark Volkmann
Partner, Object Computing, Inc.