Boost logo

Boost :

From: Fernando Cacciola (fcacciola_at_[hidden])
Date: 2001-12-21 10:09:10


Gennady,

I'm using the Unit Test Framework for testing my own code.

I've found that you can add a test case being a class member function:

class A
{
  void foo() ;
} ;
...
test->add( BOOST_TEST_CASE( &A::foo) );

First, when I saw this sort of example in the documentation, I figured that
there was a mistake, and that
foo() is a static method, because there isn't any instance of A created (as
shown by the example)

Then I realize, that actually, the test case internally creates a 'new'
A::A() by itself.

This should be properly documented.

Second: in my particular case, I NEED to test A::foo() but upon a properly
constructed A instance.
It makes no sense at all to test A::foo() on a default constructed A.

That is, I need something like:

class A
{
  A ( ... ) ;
  void foo() ;
} ;

...
A a(....);
test->add( BOOST_TEST_CASE( make_closure(a, &A::foo) ) );

Adding this functionality to unit_test_suite.hpp wouldn't be so difficult,
but I encountered a problem:

What's the rational of test_case::init()/destroy().

It *creates* and *destroys* test cases (in this cases 'A's) on behalf of the
user.

In the example case above, if the test_suite() destroys 'a' and then creates
another 'A'by default, the 'foo' method being tested will behave
unexpectedly.

So, is the automatic init()/destroy() scheme really needed? What's its
purpose?

Is there any (other) way to test a method associated with a given class
*instance*?, or it can only test (conceptually static) class methods.

TIA,

Fernando Cacciola
Sierra s.r.l.
fcacciola_at_[hidden]
www.gosierra.com

Fernando Cacciola
Sierra s.r.l.
fcacciola_at_[hidden]
www.gosierra.com


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk