Модульный тест терпит крах
Я написал несколько модульных тестовых случаев с использованием фреймворка Gtest. Если я пытаюсь протестировать класс, конструктор которого создает объект другого класса, GTest терпит крах.
Код выглядит следующим образом:
User1.cpp
class User1 { public: User1() { u = new User2(); //Line exp } ~User1() { delete u; } private: User2* u; }
User2.cpp
class User2 { public: User2(){} ~User2(){} }
тестовый пример:
TEST(test, InstantiateUser1) { User1* u = new User1(); }
Когда я отлаживал тестовый случай, он выходил из строя в строке exp (упомянутой в комментарии).
Пожалуйста, помогите мне понять, почему это происходит и как я могу решить эту проблему?
Что я уже пробовал:
Я много искал, но не нашел ничего подходящего. Я понятия не имею, как решить эту проблему.
ZurdoDev
В чем же ошибка?
Richard MacCutchan
Отладчик должен показать вам, почему он выходит из строя.
Member 14686752
Исключение, вызванное в 0x00000000000ACDB6 in Unittests.exe: 0xC0000005: нарушение доступа, выполняющее местоположение 0x00000000000ACDB6
Member 14686752
Тот же код в моем проекте работает без каких-либо ошибок, но в gtest он терпит крах.
Richard MacCutchan
Это проблема с Gtest.
Member 14686752
есть ли какой-нибудь способ решить эту проблему?
Richard MacCutchan
Правильно ли ваш код работает вне Gtest? Если это так, то проблема, скорее всего, в тестовом фреймворке, поэтому вам нужно попробовать их телефон доверия.
Member 14686752
Да, он работает правильно за пределами Gtest.
Richard MacCutchan
Я не использовал Gtest, но вполне возможно, что ваш тест написан неправильно. Проверьте документацию.