mirror of
https://github.com/catchorg/Catch2.git
synced 2024-12-23 03:43:28 +01:00
Added facility to write self-registering test cases as methods
This commit is contained in:
parent
7abc6365a9
commit
a36b8d0779
@ -33,5 +33,25 @@ namespace
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
METHOD_AS_TEST_CASE( TestClass::succeedingCase, "succeeding/TestClass/succeedingCase", "A method based test run that succeeds" );
|
||||
METHOD_AS_TEST_CASE( TestClass::failingCase, "failing/TestClass/failingCase", "A method based test run that fails" );
|
||||
|
||||
|
||||
struct Fixture
|
||||
{
|
||||
Fixture() : m_a( 1 ) {}
|
||||
|
||||
int m_a;
|
||||
};
|
||||
|
||||
TEST_CASE_METHOD( Fixture, "succeeding/Fixture/succeedingCase", "A method based test run that succeeds" )
|
||||
{
|
||||
REQUIRE( m_a == 1 );
|
||||
}
|
||||
|
||||
TEST_CASE_METHOD( Fixture, "succeeding/Fixture/failingCase", "A method based test run that fails" )
|
||||
{
|
||||
REQUIRE( m_a == 2 );
|
||||
}
|
||||
|
@ -134,6 +134,9 @@ struct AutoReg
|
||||
TestRegistry::instance().registerTest( TestCaseInfo( new MethodTestCase<C>( method ), name, description ) );
|
||||
}
|
||||
};
|
||||
|
||||
template<typename T, size_t>
|
||||
struct FixtureWrapper{};
|
||||
|
||||
} // end namespace Catch
|
||||
|
||||
@ -145,4 +148,12 @@ struct AutoReg
|
||||
#define CATCH_METHOD_AS_TEST_CASE( QualifiedMethod, Name, Desc ) \
|
||||
namespace{ Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar )( &QualifiedMethod, Name, Desc ); }
|
||||
|
||||
#define TEST_CASE_METHOD( ClassName, TestName, Desc )\
|
||||
namespace Catch{ template<> struct FixtureWrapper<ClassName, __LINE__> : ClassName \
|
||||
{ \
|
||||
void test(); \
|
||||
}; }\
|
||||
namespace { Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar ) ( &Catch::FixtureWrapper<ClassName, __LINE__>::test, TestName, Desc ); } \
|
||||
void Catch::FixtureWrapper<ClassName, __LINE__>::test()
|
||||
|
||||
#endif // TWOBLUECUBES_CATCH_REGISTRY_HPP_INCLUDED
|
||||
|
Loading…
Reference in New Issue
Block a user