Googletest никогда не терпит неудачу (где это должно) с тестом Bazel, но работает с Cmake & Clion - PullRequest
1 голос
/ 25 марта 2019

Я пытаюсь использовать googletest с bazel и cmake.

cmake и clion работают отлично, как и для тестовой части, они терпят неудачу там, где должны выйти из строя, и проходят там, где должны проходить. Тем не менее, bazel test пройдет все испытания, даже если они не должны.

Тест Базеля не работает

Например, у меня есть файл stupid_test.cc:

#include "gtest/gtest.h"

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

, который должен всегда терпеть неудачу.

Базель BUILD Файл:

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 Works

Тот же самый тестовый файл завершится с очень четким сообщением, используя 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, если это поможет.

1 Ответ

1 голос
/ 25 марта 2019

Я выяснил причину.

Просто изменить

"//bazel_build/googletest:gtest",

в файле BUILD в

"//bazel_build/googletest:gtest_main",

Я все еще в замешательстве! Если gtest не работает, он должен по крайней мере потерпеть неудачу при сборке или выдать ошибку / предупреждение. Никогда не следует говорить:

Executed 1 out of 1 test: 1 test passes.

в качестве вывода.

Я считаю это ошибкой.

...