 |
C++Talk.NET C++ language newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
VvanN Guest
|
Posted: Sat Apr 15, 2006 3:06 am Post subject: unit--, a unit test framework for C++ |
|
|
hi, fellows
I'd like to intruduce a new unit test framework for C++
freely available at:
http://unit--.sourceforge.net/
It does not need bothering test registration, here is an example
// --- begin code ---
#include "unit--.h"
testSuite(MySuite);
testCase(CompareCase, MySuite)
{
int x = 1;
int y = x + 2;
assertTrue(x < y);
}
// --- end code ---
besides, unit-- is implemented entirely in std C++, thus is portable
across different platforms and compilers |
|
| Back to top |
|
 |
Phlip Guest
|
Posted: Sat Apr 15, 2006 4:06 am Post subject: Re: unit--, a unit test framework for C++ |
|
|
VvanN wrote:
| Quote: | I'd like to intruduce a new unit test framework for C++
freely available at:
http://unit--.sourceforge.net/
It does not need bothering test registration, here is an example
|
Righteous. CppUnit mires itself in endless test registration issues, instead
of simply using macros to achieve the Test Collector pattern.
| Quote: | // --- begin code ---
#include "unit--.h"
testSuite(MySuite);
testCase(CompareCase, MySuite)
{
int x = 1;
int y = x + 2;
assertTrue(x < y);
}
// --- end code ---
|
Suppose I had two suites and wanted to run the same case over both suites?
http://c2.com/cgi/wiki?AbstractTest
Suppose a test case uses std::basic_string<>. How would I run the test case
twice, once with char and again with wchar_t?
| Quote: | besides, unit-- is implemented entirely in std C++, thus is portable
across different platforms and compilers
|
Contrarily, at error time, your editor should present the option to navigate
to a failure, the same as syntax errors.
--
Phlip
http://www.greencheese.org/ZeekLand <-- NOT a blog!!! |
|
| Back to top |
|
 |
Phlip Guest
|
Posted: Mon Apr 17, 2006 5:06 pm Post subject: Re: unit--, a unit test framework for C++ |
|
|
Dave Steffen wrote:
| Quote: | Those interested in such things might also check out the Boost unit
test framework <http://www.boost.org/libs/test/doc/index.html>; I've
had very good results using it.
|
That one always squicks me out.
Specifically, it relies on excessive test registration calls, and doesn't
use any Test Collector, despite otherwise freely abusing macros...
--
Phlip
http://www.greencheese.org/ZeekLand <-- NOT a blog!!! |
|
| Back to top |
|
 |
Dave Steffen Guest
|
Posted: Mon Apr 17, 2006 5:06 pm Post subject: Re: unit--, a unit test framework for C++ |
|
|
"Phlip" <phlipcpp (AT) yahoo (DOT) com> writes:
| Quote: | VvanN wrote:
I'd like to intruduce a new unit test framework for C++
freely available at:
http://unit--.sourceforge.net/
It does not need bothering test registration, here is an example
Righteous. CppUnit mires itself in endless test registration issues, instead
of simply using macros to achieve the Test Collector pattern.
|
Those interested in such things might also check out the Boost unit
test framework <http://www.boost.org/libs/test/doc/index.html>; I've
had very good results using it.
----------------------------------------------------------------------
Dave Steffen, Ph.D. Fools ignore complexity.
Software Engineer IV Pragmatists suffer it.
Numerica Corporation Some can avoid it.
ph (970) 419-8343 x27 Geniuses remove it.
fax (970) 223-6797 -- Alan Perlis
dgsteffen at numerica dot us |
|
| Back to top |
|
 |
VvanN Guest
|
Posted: Fri Apr 28, 2006 6:06 am Post subject: Re: unit--, a unit test framework for C++ |
|
|
Phlip wrote:
| Quote: | VvanN wrote:
I'd like to intruduce a new unit test framework for C++
freely available at:
http://unit--.sourceforge.net/
It does not need bothering test registration, here is an example
Righteous. CppUnit mires itself in endless test registration issues, instead
of simply using macros to achieve the Test Collector pattern.
// --- begin code ---
#include "unit--.h"
testSuite(MySuite);
testCase(CompareCase, MySuite)
{
int x = 1;
int y = x + 2;
assertTrue(x < y);
}
// --- end code ---
Suppose I had two suites and wanted to run the same case over both suites?
http://c2.com/cgi/wiki?AbstractTest
Suppose a test case uses std::basic_string<>. How would I run the test case
twice, once with char and again with wchar_t?
we might consider that they are different test cases, |
but they have code in common.
"extract method"
(http://www.refactoring.com/catalog/extractMethod.html)
could work for this scenario.
assertTrue() can effect in functions invoked by a testCase
here is an example:
// --- begin code ---
#include <vector>
#include <numeric>
#include <algorithm>
#include "../unit--.h"
testSuite(TemplateSuite)
template <typename T>
void testAlgorithms()
{
using namespace std;
using namespace unit_minus;
vector<T> ve(100, 1);
partial_sum(ve.begin(), ve.end(), ve.begin());
assertTrue(ve.size() > 0);
assertTrue(1 == ve[0]);
for (unsigned i = 1; i < ve.size(); ++i) {
assertTrue(ve[i - 1] + 1 < ve[i]);
}
}
namespace {
testCase(IntCase, TemplateSuite)
{
testAlgorithms<int>();
}
testCase(UnsignedCase, TemplateSuite)
{
testAlgorithms<unsigned>();
}
} // namespace
// --- end code ---
| Quote: | besides, unit-- is implemented entirely in std C++, thus is portable
across different platforms and compilers
Contrarily, at error time, your editor should present the option to navigate
to a failure, the same as syntax errors.
--
Phlip
http://www.greencheese.org/ZeekLand <-- NOT a blog!!! |
|
|
| Back to top |
|
 |
Phlip Guest
|
Posted: Fri Apr 28, 2006 10:06 am Post subject: Re: unit--, a unit test framework for C++ |
|
|
VvanN wrote:
| Quote: | testSuite(TemplateSuite)
template <typename T
void testAlgorithms()
{
using namespace std;
using namespace unit_minus;
vector<T> ve(100, 1);
partial_sum(ve.begin(), ve.end(), ve.begin());
assertTrue(ve.size() > 0);
assertTrue(1 == ve[0]);
for (unsigned i = 1; i < ve.size(); ++i) {
assertTrue(ve[i - 1] + 1 < ve[i]);
}
}
namespace {
testCase(IntCase, TemplateSuite)
{
testAlgorithms<int>();
}
testCase(UnsignedCase, TemplateSuite)
{
testAlgorithms<unsigned>();
}
} // namespace
// --- end code ---
|
Thanks!
One use of AbstractTest is to turn a cases' setUp() and tearDown() into an
abstract factory. setUp() will create a different type, so a common case
body can work across a range of types. Your code doesn't need this effect
because your assertions are not members of the basic TestCase class.
(Assertions are typically macros, so I mean macros are members when they use
member variables inside them.)
--
Phlip
http://c2.com/cgi/wiki?ZeekLand <-- NOT a blog!!! |
|
| Back to top |
|
 |
Powered by phpBB © 2001, 2006 phpBB Group
|