Тест Bazel для написанного самостоятельно кода tenorflow c ++ проходит каждый тест независимо от ожидаемого значения - PullRequest
1 голос
/ 18 апреля 2019

Я использую bazel для создания своего собственного кода tenorflow c ++. В настоящее время я застрял в написании модульных тестов, потому что тесты проходят для каждого теста, который я написал, независимо от ожидаемых значений. Например, я проверяю размеры тензора, который должен быть 4, но если я скажу, что ожидаемое значение равно 5, оно все равно проходит. И это поведение - правда для каждого теста, который я написал.

Я чувствую, что это проблема с файлом bazel BUILD, который я написал, или, возможно, даже с тензорным потоком. В настоящее время я использую cc_library для некоторых вспомогательных функций. И tf_cc_test для модульного теста. Я также использовал tf_cc_binary и cc_binary для вспомогательных функций, но затем я получаю неопределенную ошибку ссылки для одной функции, которая была объявлена ​​в заголовочном файле и определена в исходном файле.

Это макет моих папок и файлов:

dl_super_resolution
   |
   |-src
   |  |-dl_model_helper.cpp 
   |
   |-include
   |  |-dl_model_helper.h
   |
   |-test
   |  |-dl_model_helper_unit_test.cpp

#include в dl_model_helper.cpp и dl_model_helper_unit_test.cpp выглядит следующим образом:

#include <dl_model_helper.h>

Вот как выглядит файл BUILD:

load("@org_tensorflow//tensorflow:tensorflow.bzl", "tf_cc_test")

cc_library(
    name = "dl_super_resolution_lib",
    srcs = [
        "src/dl_model_helper.cpp",
        "src/dummy.cpp",
    ],
    hdrs = ["include/dl_model_helper.h"],
    data = glob(["images/**"]),
    includes = [
        "include",
        "src",
    ],
    strip_include_prefix = "include",
    visibility = ["//visibility:public"],
    deps = [
        "@org_tensorflow//tensorflow:libtensorflow_cc.so",
        "@org_tensorflow//tensorflow/cc:cc_ops",
        "@org_tensorflow//tensorflow/cc:client_session",
        "@org_tensorflow//tensorflow/core:framework",
        "@org_tensorflow//tensorflow/core:tensorflow",
    ],
)

tf_cc_test(
    name = "dl_super_resolution_tests",
    srcs = glob(["test/*.cpp"]),
    deps = [
        ":dl_super_resolution_lib",
        "@googletest//:gtest_main",
    ],
)

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

1 Ответ

0 голосов
/ 23 апреля 2019

Я наконец нашел способ запустить его, добавив:

int main(int argc, char **argv) 
{
    ::testing::InitGoogleTest(&argc, argv);
    return RUN_ALL_TESTS();
}

Это не должно требоваться при запуске модульного теста с "bazel test", я думаю. Но это решает проблему.

...