Я использую подталкивание 1,61 и я работаю со следующим типом установки Test Boost, где я вручную регистрацией тестов:подталкивания Тест входа/выход приспособление с ручной регистрацией
// testsuite.cpp
#include <boost/test/unit_test.hpp>
using boost::unit_test::test_suite;
test_suite* init_unit_test_suite(int, char* []) {
test_suite* test = BOOST_TEST_SUITE("TestSuiteName");
test->add(FooTest::suite());
return test;
}
// foo.hpp
#include <boost/test/unit_test.hpp>
using boost::unit_test::test_suite;
class FooTest {
public:
static void testFoo1();
static void testFoo2();
static test_suite* suite();
}
// foo.cpp
#include <foo.hpp>
void FooTest::testFoo1() {
// testFoo1 implementation
}
void FooTest::testFoo2() {
// testFoo2 implementation
}
test_suite* FooTest::suite() {
test_suite* suite = BOOST_TEST_SUITE("FooTest");
suite->add(BOOST_TEST_CASE(&FooTest::testFoo1));
suite->add(BOOST_TEST_CASE(&FooTest::testFoo2));
return suite;
}
Я хотел бы, чтобы добавить запись/выход, как описано here, в набор тестов FooTest. Документация Boost Test описывает эту функцию в контексте автоматически зарегистрированных тестов.
Могу ли я использовать эту функцию входа/выхода с моей настройкой, где я вручную регистрирую тесты? Если нет, есть ли у кого-нибудь предложение относительно того, как я мог бы имитировать это поведение, т. Е. У объекта был сконструирован один раз при входе в тестовый набор FooTest, доступный для всех тестов в тестовом наборе, а затем уничтоженный при выходе из пакета FooTest ?
Аналогичный вопрос был задан here, но я не смог найти ответ, который мог бы использовать.
Не хотите ли, чтобы экземпляры «Бар» были созданы и уничтожены для каждого теста? Таким образом, ваш тест не работает изолированно. – ToniBig
Хорошо сегодня, я не вижу веских причин для использования ручной проверки теста. Я также считаю, что регистрация теста может быть смешана внутри одного тестового модуля: ручная + автоматическая должна быть способна сосуществовать в тестовом модуле. В вашем случае вы можете использовать автоматическую регистрацию для класса 'FooTest' (также' test_unit_fixture_ptr' и 'p_fixtures' официально не документированы и должны быть частным API). – Raffi