No tests were specified errror

Hi all,

I am new to ruby and so i am facing this silly issue.

I have a BaseClass which i have inherited from test::Unit::Testcase,
Inside that i only have setup and teardown method. Now there is another
class DemoTest which i have inherited from BaseClass as shown below

BaseClass.rb inside Test folder
require 'test/unit'
require 'rubygems'
class BaseClass < Test::Unit::TestCase
  def setup
    puts "setup called"
  end

  def teardown
    puts "teardown called"
  end
end

DemoTest.rb inside Test Folder
require 'Test/BaseClass'
require 'test/unit'
require 'rubygems'

class DemoTest < BaseClass

  def test_first
    puts "first"
  end

  def test_second
    puts "second"
  end

end

Now when i run the DemoTest.rb it says something like this.

1) Failure:
default_test(BaseClass) [C:/Documents and
Settings/gshah/workspace/Framework/Test/DemoTest.rb:27]:
No tests were specified.

3 tests, 1 assertions, 1 failures, 0 errors

I am not able to understand why it is showing that No test were
specified.

And why it is showing me that there were 3 test while there is only two
tests ???

···

--
Posted via http://www.ruby-forum.com/.

It's because it's trying to run all test cases in BaseClass and in
DemoTest (since the default behaviour is to find all classes which are
subclasses of Test::Unit::TestCase, and run those)

If someone can explain how to mark BaseClass as 'not for testing' then
I'd like to know that as well, as I had the same problem too.

My workaround was to define a method test_dummy in BaseClass which does
nothing (or just assert true), but I expect there's a better way.

···

--
Posted via http://www.ruby-forum.com/.

Brian Candler wrote in post #1013695:

If someone can explain how to mark BaseClass as 'not for testing' then
I'd like to know that as well, as I had the same problem too.

+1

My workaround was to define a method test_dummy in BaseClass which does
nothing (or just assert true), but I expect there's a better way.

Another workaround might be to replace BaseClass with a module which is
included in DemoTest which then directly inherits Test::Unit::TestCase.

Kind regards

robert

···

--
Posted via http://www.ruby-forum.com/\.

Robert Klemme wrote in post #1013718:

Brian Candler wrote in post #1013695:

If someone can explain how to mark BaseClass as 'not for testing' then
I'd like to know that as well, as I had the same problem too.

+1

My workaround was to define a method test_dummy in BaseClass which does
nothing (or just assert true), but I expect there's a better way.

Another workaround might be to replace BaseClass with a module which is
included in DemoTest which then directly inherits Test::Unit::TestCase.

Kind regards

robert

Thanks robert,
I did the same thing but then the problem is another method like
startup, shutdown or cleanup is not being called.

···

--
Posted via http://www.ruby-forum.com/\.

Hi,

In <3b1a10acac5551a92db4fe01e8581f9e@ruby-forum.com>
  "Re: No tests were specified errror" on Fri, 29 Jul 2011 20:05:44 +0900,

Brian Candler wrote in post #1013695:

If someone can explain how to mark BaseClass as 'not for testing' then
I'd like to know that as well, as I had the same problem too.

+1

Implement it as a module not class. To share method
implementations, a module and 'include' are used in Ruby
way. To implement the same category objects, a class and
inheritance are used in Ruby way. So test-unit 2.x use a
module and 'include' for 'not for testing, just for
sharing'.
("Ruby way" is one of the important keywords in test-unit
API.)

My workaround was to define a method test_dummy in BaseClass which does
nothing (or just assert true), but I expect there's a better way.

Another workaround might be to replace BaseClass with a module which is
included in DemoTest which then directly inherits Test::Unit::TestCase.

So it's not workaround. It's a right (Ruby and test-unit) way. :slight_smile:

Thanks,

···

Robert Klemme <shortcutter@googlemail.com> wrote:
--
kou