【问题标题】:Googletest never fails (where it should) with bazel test but works with cmake & clionGoogletest 在 bazel 测试中永远不会失败(应该在哪里失败),但可以与 cmake 和 clion 一起使用
【发布时间】:2019-03-25 02:23:52
【问题描述】:

我正在尝试将googletestbazel 和cmake 一起使用。

cmake 和 clion 与测试部分一样完美,它在应该失败的地方失败,在应该通过的地方通过。 但是,bazel test 将通过所有测试,即使它们不应该通过。

Bazel 测试不起作用

例如,我有stupid_test.cc 文件:

#include "gtest/gtest.h"

TEST(StupidTests, Stupid1) {
  EXPECT_EQ(100, 20);
  EXPECT_TRUE(false);
}

应该总是失败。

bazelBUILD 文件:

cc_test(
    name = "stupid_test",
    srcs = ["stupid_test.cc"],
    deps = [
        "//bazel_build/googletest:gtest",
    ],
)

其中bazel_build/googletest 与从 googletest github 下载的文件完全相同。

然后我运行bazel test :stupid_test,输出为:

⇒  blaze test :stupid_test
DEBUG: /private/var/tmp/_bazel_myusername/741c62b201e51840aa320b156e05fd70/external/bazel_tools/tools/osx/xcode_configure.bzl:87:9: Invoking xcodebuild failed, developer dir: /Users/honghaoli/Downloads/Xcode.app/Contents/Developer ,return code 1, stderr: xcrun: error: invalid DEVELOPER_DIR path (/Users/honghaoli/Downloads/Xcode.app/Contents/Developer), missing xcrun at: /Users/honghaoli/Downloads/Xcode.app/Contents/Developer/usr/bin/xcrun
, stdout: 
INFO: Analysed target //:stupid_test (0 packages loaded, 0 targets configured).
INFO: Found 1 test target...
Target //:stupid_test up-to-date:
  bazel-bin/stupid_test
INFO: Elapsed time: 1.840s, Critical Path: 1.55s
INFO: 4 processes: 4 darwin-sandbox.
INFO: Build completed successfully, 4 total actions
//:stupid_test                                                           PASSED in 0.1s

Executed 1 out of 1 test: 1 test passes.
INFO: Build completed successfully, 4 total actions

我不知道为什么它通过了。

CMake 作品

使用 cmake 和 clion 相同的测试文件会失败并显示非常清晰的消息。例如,CMakeLists 的一部分

add_executable(stupid_test stupid_test.cc)
target_link_libraries(stupid_test gtest gtest_main)
add_test(NAME stupid_test COMMAND stupid_test)

以及输出失败信息:

Testing started at 19:16 ...
/Users/myusername...blabla/cmake-build-debug/stupid_test --gtest_filter=* --gtest_color=no
Running main() from /Users/myusername...blabla/cmake-build-debug/googletest-src/googletest/src/gtest_main.cc
[==========] Running 1 test from 1 test suite./Users/myusername...blabla/stupid_test.cc:11: Failure
Expected equality of these values:
  100
  20
/Users/myusername...blabla/stupid_test.cc:12: Failure
Value of: false
  Actual: false
Expected: true

/Users/myusername...blabla/stupid_test.cc:13: Failure
Value of: true
  Actual: true
Expected: false


Process finished with exit code 1

如果有帮助,我正在使用 Mac OS 10.14。

【问题讨论】:

    标签: c++ unit-testing cmake googletest bazel


    【解决方案1】:

    我知道原因了。

    只是改变

    "//bazel_build/googletest:gtest",
    

    BUILD文件中放入

    "//bazel_build/googletest:gtest_main",
    

    我还是一头雾水! 如果gtest 不起作用,它至少应该使构建失败或抛出错误/警告。它永远不应该说:

    Executed 1 out of 1 test: 1 test passes.
    

    作为输出。

    我认为这是一个错误。

    【讨论】:

    • 一个相关的帖子,但不是我的问题的答案here
    猜你喜欢
    • 2021-08-08
    • 1970-01-01
    • 2021-01-21
    • 2015-03-11
    • 1970-01-01
    • 2021-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多