Member 14686752 Ответов: 1

Модульный тест терпит крах


Я написал несколько модульных тестовых случаев с использованием фреймворка 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, но вполне возможно, что ваш тест написан неправильно. Проверьте документацию.

1 Ответов

Рейтинг:
2

Richard MacCutchan

Я просмотрел тестовую документацию Google и думаю, что ваш тестовый код неверен. Тест должен вызвать тестируемую функцию и проверить ее результаты. Видеть googletest/primer.md at master · google/googletest · GitHub[^] для правильного написания тестов.


Member 14686752

Тестовый кейс написан правильно, но все равно не работает.

Richard MacCutchan

И снова это ни о чем не говорит. Пожалуйста, отредактируйте свой вопрос и покажите, что именно вы сделали. Скорее всего, нам также нужно увидеть недостающий код из ваших образцов.