Google 使用 fstream 的测试方法
Google Test methods with fstream
我想编写 Google 测试方法,即 return void
并采用两个参数:文件 1 的文件路径和文件 2 的文件路径。此方法读取第一个文件中的一些数据并创建第二个文件,此数据写入何处。为此,我使用 std::ifstream
和 std::ofstream
。在测试中,我想调用我的方法,然后检查是否创建了第二个文件:
TEST_F(ConverterTest, Convert) {
converter.ConvertToBin(std::string("file1.txt"), std::string("file2.txt"));
std::ifstream data("file2.txt");
EXPECT_TRUE(data.is_open());
}
我创建了 file1 和 运行 测试。但是这个测试失败了,因为在方法 ConvertToBin()
-std::basic_ifstream.is_open()
中失败了(return false)。 file1 的路径完全正确。
#include <fstream>
void Converter::ConvertToBin(const std::string& src_path,
const std::string& dst_path) {
input_stream_ = std::ifstream(src_path, std::ios::in);
if (!input_stream_.is_open())
throw(std::string("Error."));
output_stream_ = std::ofstream(dst_path,
std::ios::binary | std::ios::out);
if (!output_stream_.is_open())
throw(std::string("Error."));
...
}
即使在我的测试中我只创建了 std::ifstream
(不要调用 converter.ConvertToBin()
),之前在我的目录中创建了 "file2.txt",data.is_open()
return 也是假的。我确定我正在通过正确的路径。我真的不能在 Google 测试中使用 fstream 吗?还是我做错了什么?
我的测试class:
#include <gtest/gtest.h>
#include "src/converter/converter.h"
class ConverterTest : public ::testing::Test {
protected:
ConverterTest() = default;
Converter converter;
};
没关系。在项目构建系统中,指向根目录的路径不正确。因此文件路径错误。
我想编写 Google 测试方法,即 return void
并采用两个参数:文件 1 的文件路径和文件 2 的文件路径。此方法读取第一个文件中的一些数据并创建第二个文件,此数据写入何处。为此,我使用 std::ifstream
和 std::ofstream
。在测试中,我想调用我的方法,然后检查是否创建了第二个文件:
TEST_F(ConverterTest, Convert) {
converter.ConvertToBin(std::string("file1.txt"), std::string("file2.txt"));
std::ifstream data("file2.txt");
EXPECT_TRUE(data.is_open());
}
我创建了 file1 和 运行 测试。但是这个测试失败了,因为在方法 ConvertToBin()
-std::basic_ifstream.is_open()
中失败了(return false)。 file1 的路径完全正确。
#include <fstream>
void Converter::ConvertToBin(const std::string& src_path,
const std::string& dst_path) {
input_stream_ = std::ifstream(src_path, std::ios::in);
if (!input_stream_.is_open())
throw(std::string("Error."));
output_stream_ = std::ofstream(dst_path,
std::ios::binary | std::ios::out);
if (!output_stream_.is_open())
throw(std::string("Error."));
...
}
即使在我的测试中我只创建了 std::ifstream
(不要调用 converter.ConvertToBin()
),之前在我的目录中创建了 "file2.txt",data.is_open()
return 也是假的。我确定我正在通过正确的路径。我真的不能在 Google 测试中使用 fstream 吗?还是我做错了什么?
我的测试class:
#include <gtest/gtest.h>
#include "src/converter/converter.h"
class ConverterTest : public ::testing::Test {
protected:
ConverterTest() = default;
Converter converter;
};
没关系。在项目构建系统中,指向根目录的路径不正确。因此文件路径错误。