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