Неправильные результаты модульных тестов в VS Test Explorer - PullRequest
0 голосов
/ 07 июля 2019

Я делаю приложение для обработки изображений, используя OpenCV.Я хотел разработать его с помощью TDD, поэтому я начал изучать googletest.Я настроил проект ColorDetectorTests с помощью Google Test Adapter из MS Visual Studio 2019 и ColorDetector как Исполняемый со статической сборкой библиотеки в Post-Action.Сначала был пройден фиктивный тест, такой как EXPECT_TRUE (true).Затем я сделал функцию readImage в моем проекте.Создание крайнего случая - когда прочитанное изображение не существует по определенному пути, все в порядке.Но когда я прохожу правильный путь изображения и ожидаю положительного результата, происходит странное поведение.Пока я запускаю тестовый проект, у меня все ОК тесты.Но в окне VS Test Explorer второй тест не пройден.Почему это так?

enter image description here

ColorDetector:

bool ColorDetector::readImage(std::string imagePath)
{
    cv::Mat image;
    image = cv::imread(imagePath, cv::IMREAD_COLOR);

    if (image.empty()) {
        std::cerr << "Could not open or find the image" << std::endl;
        return false;
    }

    return true;
}

Тесты:

#include <gtest/gtest.h>

#include "../ColorDetector/ColorDetector.h"

const std::string inputImageDir = "Resources/Input/";
const std::string wrongInputImage = inputImageDir + "wrong.png";
const std::string correctInputImage = inputImageDir + "correct.jpg";

class ColorDetector_Test : public ::testing::Test
{
protected:
    ColorDetector colorDetector;
};


TEST_F(ColorDetector_Test, LoadImage_NotExisting_Failed) {
    EXPECT_FALSE(colorDetector.readImage(wrongInputImage));
}

TEST_F(ColorDetector_Test, LoadImage_Correct_Succeeded) {
    EXPECT_TRUE(colorDetector.readImage(correctInputImage));
}

Есть липроблема в моем коде, конфигурации проекта или это ошибка MS?

РЕДАКТИРОВАТЬ: Проблема решена.Я добавил изображения только в каталог проекта, а Test Explorer запускал их из выходного каталога.После добавления изображений в Solution / x64 / Release все работает нормально.

...