Можно ли использовать фреймворк Unity C unittest для тестирования кода C ++? - PullRequest
2 голосов
/ 29 мая 2020

Я использую среду единства для тестирования моего кода C на AtMega32A. Это прекрасно работает. Теперь мне интересно, могу ли я каким-то образом обмануть Unity, чтобы также протестировать свой код на C ++.

Я сделал небольшое доказательство концептуальной программы, которая раскрывает всех членов класса C ++ через функцию publi c. Теперь я хотел бы добавить несколько макросов assert в эту функцию publi c. Программу можно найти здесь: https://github.com/cdwijs/cpp_unit_test

В основном у меня есть следующее:

int main(void)
{
    UNITY_BEGIN();
    //RUN_TEST(myPrivate.executeTest); //unity_internals.h(707,65): error: invalid use of non-static member function
    //RUN_TEST((void*)myPrivate.executeTest); //error: invalid use of member function (did you forget the '()' ?)
    //RUN_TEST((func)))myPrivate.executeTest); //error: 'func' was not declared in this scope
    //RUN_TEST(&myPrivate.executeTest); //error: cannot convert 'void (Private::*)()' to 'UnityTestFunction {aka void (*)()}' for argument '1' to 'void UnityDefaultTestRun(UnityTestFunction, const char*, int)'
    UNITY_END();

    myPrivate.more();
    myPrivate.more();
    myPrivate.less();

    /* Replace with your application code */
    while (1)
    {
    }
}

И в Private_test. cpp У меня есть следующее :

#include "private.h"
#include "unity.h"

void Private::executeTest (void)
{
    myNumber = 3;
    TEST_ASSERT_EQUAL_INT(3,myNumber);
    more();
    TEST_ASSERT_EQUAL_INT(4,myNumber);
}

Я не могу понять, как запустить тестовую функцию. Любые идеи? Я смотрю в правильном направлении или мне следует использовать тестовую среду, специально предназначенную для C ++?

...