Я использую cppunit для модульных тестов моего проекта.Использует ли cppUnit fork() при запуске каждого модульного теста?
И я интересно, если CppUnit запуск каждого модульного тестирования в системном вызове новая вилка(), потому что:
- Используя вилку позволит создать новое адресное пространство, в котором для выполнения каждого теста блок
- Использование fork позволит сохранить модульные тесты, даже если один из них вызывает сбой.
Я определил глобальную переменную, а затем попытался изменить глобальную переменную в модульном тесте и изменить, что не влияет на родительский процесс, но, к сожалению, я обнаружил, что глобальная переменная изменена.
Так, cppunit по умолчанию не поддерживает тестовый запуск с fork()
. И мне интересно, есть ли макросы в cppunit, которые могли бы инициировать модульный тест с fork()
?
Мои тесты определяются следующим образом:
class MYTest : public CppUnit::TestCase {
CPPUNIT_TEST_SUITE(MYTest);
CPPUNIT_TEST(getRetryValueTest);
CPPUNIT_TEST(getRetryValueTest2);
CPPUNIT_TEST_SUITE_END();
public:
virtual void setUp();
void getRetryValueTest();
void getRetryValueTest2();
};
Обычно это делается только для «тестов смерти», когда ожидание является тестом, что приведет к прекращению приложения при возникновении ошибки (подумайте о каскадных исключениях). Не могу дать окончательного ответа здесь, так как я не знаком с cppUnit. –
Кажется, было бы легко проверить себя. Напишите два теста и распечатайте каждый текущий идентификатор процесса. Они оба печатают одни и те же значения? –
Это было бы хорошим способом гарантировать, что один тест не влияет на другой, но иногда вы ХОТИТЕ тесты влиять друг на друга [без сохранения состояния в файле или некоторых таких]. Я бы подумал, что это идеальный вариант - хотя я не знаю, как работает cppunit. –