我正在使用OpenCV制作图像处理应用程序。我想用TDD开发它,所以我开始学习googletest。我使用MS Visual Studio 2019中的Google Test Adapter和ColorDetector将ColorDetectorTests项目设置为Executable,并在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后,一切正常。