假設我有一個名爲ProfileTest
谷歌的測試夾具從::testing::TestWithParams<T>
繼承,創建一個解析器:如何在Google Test中爲一個燈具運行多個測試用例?
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)
這使我所有的測試案例將提供給有ProfileTest
作爲夾具任何TEST_P
錯誤。
我應該怎麼做才能同時測試格式良好的內容和不良格式的內容?
難道你不能爲你的參數集添加一個布爾值,並且該布爾值指示內容是否格式正確?然後,當你編寫你的'TEST_P'時,你可以根據它是否格式良好形成不同的斷言。 –
@NirFriedman這是不好的做法。如果測試失敗,則測試失敗時,輸出不清楚輸出布爾標誌的值。是的,你可以添加額外的打印,但有更好的方法來解決這個問題。 –
你真的需要'TestWithParam'嗎?那麼,我的意思是說,你真的需要一些格式良好的和幾個不合格的價值觀,或者你只是計劃兩個版本(一個是合格的,一個是不合格的)? –