gpt4 book ai didi

c++ - 如何在 Google Test 中为一个夹具运行多个测试用例?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:51:26 25 4
gpt4 key购买 nike

假设我有一个名为 ProfileTest 的 Google Test fixture继承自 ::testing::TestWithParams<T>创建一个解析器:

class ProfileTest:

public ::testing::TestWithParam<std::tuple<std::string,std::string>>{

public:
QString getName(){
return QFileInfo(*m_file).fileName();
}

protected:
void SetUp(){

m_profile = new Profile();

m_file = new QFile(std::get<0>(GetParam()).c_str());
m_file->open(QIODevice::WriteOnly | QIODevice::Text);
m_file->write(std::get<1>(GetParam()).c_str());
m_file->close();

}
void TearDown(){

delete m_file;

delete m_profile;
}

Profile* m_profile;
QFile *m_file;
};

参数化测试用例:

TEST_P(ProfileTest, TestProfileGoodFormedContent){
ASSERT_NO_THROW(m_profile->readProfile(QFileInfo(*m_file)));
ASSERT_STREQ(m_profile->name(), getName());
ASSERT_GE(m_profile->getProfileConfigurations().size(),1);
}

我已经添加了 TEST_CASE内容格式正确,一切都很好。

现在我想添加 TEST_CASE内容格式错误,但是 TestProfileGoodFormedContent TEST_P不适合测试不良内容。

我想我应该添加一个新的 TEST_P , 但它将具有相同的 fixture(ProfileTest)这给我带来了一个错误,即所有测试用例都将提供给任何 TEST_PProfileTest作为夹具。

我应该怎么做才能同时测试格式正确的内容和格式错误的内容?

最佳答案

在您的情况下,您需要与不同场景一样多的 Google 测试装置。

当然,您可以拥有基夹具类 - 它将为您设置常见的东西:

class ProfileTestBase :

public ::testing::TestWithParam<std::tuple<std::string,std::string>>{

public:
QString getName(){
return QFileInfo(*m_file).fileName();
}

protected:
void SetUp(){

m_profile = new Profile();

m_file = new QFile(std::get<0>(GetParam()).c_str());
m_file->open(QIODevice::WriteOnly | QIODevice::Text);
m_file->write(std::get<1>(GetParam()).c_str());
m_file->close();

}
void TearDown(){

delete m_file;

delete m_profile;
}

Profile* m_profile;
QFile *m_file;
};

所以 - 基本上你当前的类将成为基类。

为了好/坏/其他 - 创建特定的夹具类:

class GoodProfileTest : public ProfileTestBase {};
class BadProfileTest : public ProfileTestBase {};

您当前的“良好”配置文件测试属于 GoodProfileTest:

TEST_P(GoodProfileTest, TestProfileGoodFormedContent){
ASSERT_NO_THROW(m_profile->readProfile(QFileInfo(*m_file)));
ASSERT_STREQ(m_profile->name(), getName());
ASSERT_GE(m_profile->getProfileConfigurations().size(),1);
}

无论您需要作为不良配置文件进行测试 - 使用 BadProfileTest 类。依此类推...当然 - 您需要为每个灯具使用 INSTANTIATE_*** 宏。

关于c++ - 如何在 Google Test 中为一个夹具运行多个测试用例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38208419/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com