UPDATED: I am learning about GoogleTest to test C/C++ programs. I heard GoogleTest is a good tool for it. I tried one simple thing, which is to read input from a file, during a TEST() function, and it did not seem to work:
test.cpp in the google test project:
#include <iostream> #include <fstream> #include <filesystem> TEST(IOTest, ReadFile) { std::string filename = "input.txt"; std::string buffer; std::ifstream ifs(filename, std::ios::binary); std::filesystem::path cwd = std::filesystem::current_path(); std::cout << "Current directory path: " << cwd << std::endl; std::cout << "Current file path: " << __FILE__ << std::endl; ASSERT_TRUE(ifs.is_open()); } The resulting test failed. And the output is:
Current directory path: "C:\\Users\\Tong\\source\\repos\\BookLibrary\\Debug" Current file path: C:\Users\Tong\source\repos\BookLibrary\GoogleTest\test.cpp Value of: ifs.is_open() Actual: false Expected: true I placed the file "input.txt" under the current directory, which is:
C:\Users\Tong\source\repos\BookLibrary\GoogleTest\Debug\input.txt but it seems that the program cannot find or open it.
Am I missing something here? I also tried
std::string filename = "./input.txt"; but still no luck in reading the file.
UPDATE: problem solved; everything was correct except that I had placed the input.txt file in the wrong folder. It should be placed in
C:\Users\Tong\source\repos\BookLibrary\Debug and not
C:\Users\Tong\source\repos\BookLibrary\GoogleTest\Debug
main.ASSERT_TRUE(ifs)orASSERT_TRUE(ifs.is_open())"input.txt", the current working directory is assumed to be the location of that file. You seem to believe that "under the project folder of my google test project" is your current working directory, but your test result implies that it is not.