android - 纠结谷歌测试

标签 android c++ unit-testing android-ndk qt-creator

我无法启动并运行 Google 测试。我已阅读建议的 steps来自 Google,我还查看了以前的 post ,并阅读其他一些examples , 但它并没有解决很多问题。

为简单起见,我正在尝试 Google 测试中建议的示例,该示例可从 Android ndk 的目录 - sample1 中获得:

// main.cpp

#include <QtGui/QGuiApplication>
#include "qtquick2applicationviewer.h"
#include "gtest/gtest.h"

int main(int argc, char *argv[])
{
    QGuiApplication app(argc, argv);
    testing::InitGoogleTest(&argc, argv);

    QtQuick2ApplicationViewer viewer;
    viewer.setMainQmlFile(QStringLiteral("qml/factorial/main.qml"));
    viewer.showExpanded();

    return RUN_ALL_TESTS();
}

//sample1_unittest.cpp

#include <limits.h>
#include "sample1.h"
#include "gtest/gtest.h"

// Tests factorial of 0.
TEST(FactorialTest, Zero) {
  EXPECT_EQ(1, Factorial(0));
}

文件sample1.h、sample1.cpp也在工程中,其中包含阶乘函数。谷歌测试同样获知项目文件——factorial.pro:

INCLUDEPATH += 
/opt/android-studio/ndk/sources/third_party/googletest/googletest/include

当我按下 [Build > Build Project "factorial"] 时,出现以下错误:

main.cpp:8: error: undefined reference to 'testing::InitGoogleTest(int*, char**)'
sample1_unittest.cpp:17: error: undefined reference to 'testing::Test::Test()'

我正在使用 Ubuntu、QtCreator、Android 和 C++。事实上,我已经花了 3 天的时间进行模拟,但到目前为止并没有得到太多。因此,我在这里发帖希望一些大师可以对此给出任何提示。任何帮助将不胜感激。

最佳答案

看来您还没有根据您的描述构建 Google Test。您需要将项目编译成一个库,然后链接到它。如果你有 CMake安装,那么你有两个选择:

  • 使用 CMake 的 GUI(它相当直观)生成构建系统文件,然后照常使用这些文件(例如,如果您生成 Visual Studio 解决方案,请打开 .sln 文件并构建项目)。
  • 使用命令行做同样的事情;本质上你只是创建一个新目录并执行 cmake <path-to-google-test>在里面。其余相同。

您也可以自己构建库。该发行版包含一个名为 fused-src 的文件夹其中至少应包含两个文件:gtest_main.cppgtest-all.cpp .编译这些文件,你就完成了。这里需要生成两个库:gtest来自 gtest-all.cppgtest_main来自 gtest_main.cpp .

另一种选择是获取已经构建的库。我从未搜索过它们,但它们可能就在那里。

关于android - 纠结谷歌测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22140325/

相关文章:

java - 单元测试架构问题

database - "Cannot drop database because it is currently in use"。怎么修?

android - Service Worker client.openWindow 从 list 中打开 start_url 而不是请求的 URL

Android: onLongClickListener while - 陷入无限循环并挂起应用程序

c++ - 为什么我在执行以下代码时出错?

c++ - 需要帮助为 Arduino 创建无限数组 (c/c++)

ios - 在单元测试中,验证使用参数 NSData 调用的函数(其中包含 NSString)

Android Studio gradle 刷新失败

android - 带有 SlidingNavigationDrawer 的 OnItemClickListener

c++ - 分区模块是否由主模块接口(interface)单元输出?