Подтвердить что ты не робот

Модульное тестирование на Android NDK

Как вы запускаете модульные тесты на собственный код Android (собственный C/С++, а не Java)? Пока что я нашел один аналогичный вопрос, и ответ говорит, что использовать junit с JNI, который я не хочу делать (добавление вызовов JNI кажется излишне сложным для модульное тестирование, и на самом деле не является unit test собственного кода).

Действительно ли CppUnit (также предлагаемый там) работает на Android? Обратите внимание: я хочу, чтобы тесты запускались изначально на устройстве, а не в среде разработки хоста. Это выглядит как порт Android, стоит ли смотреть на него?

Официальная платформа Google, такая как googletest, была бы идеальной, но, похоже, она не работает с NDK.

4b9b3361

Ответ 1

Я использую googletest через NDK. Я использую $(вызов import-module для вывода основного .so, а затем в исполняемом файле есть один файл, который выглядит как

int main(int argc, char *argv[])
{
#if RUN_GTEST
    INIT_GTESTS(&argc,(char**)argv);
    RUN_ALL_GTESTS();
#endif
}

И затем я создаю это с помощью BUILD_EXECUTABLE, разворачиваю его так:

find libs/ -type f -print -exec adb push {} /data/local/tmp \;

и запустите его, как

adb shell LD_LIBRARY_PATH=/data/local/tmp:/vendor/lib:/system/lib /data/local/tmp/gtest

Таким образом, он не проверяет жизненный цикл приложения, но проверяет все модульные тесты.

Если мне нужно было что-то протестировать с помощью пользовательского интерфейса, я мог бы сделать что-то подобное, но сделать то, что теперь является "основной" родной функцией и вызывать ее при загрузке активности.