這樣的情境跟 Test Case 有點類似,有沒有辦法讓 Test case 增加時,不必動到測試的邏輯程式?解法就是把 Test Case 用目錄管理,每次做 Unit Test 時,是去掃目錄的檔案出來即可。
片段程式碼:
#include <dirent.h>
bool getFiles(std::string dir, std::vector<std::string> &files) {
DIR *dp;
struct dirent *dirp;
if((dp = opendir(dir.c_str())) == NULL)
return false;
while ((dirp = readdir(dp)) != NULL)
if(dirp->d_name && dirp->d_name[0] != '.')
files.push_back(dir+"/"+std::string(dirp->d_name));
closedir(dp);
return true;
}
const std::string testcase_dir_Func1 = "testcase_dir";
TEST(MyJob, testFunc1) {
std::vector<std::string> testcase;
std::string dirTarget = testcase_dir_Func1;
ASSERT_EQ(getFiles(dirTarget,testcase), true);
ASSERT_EQ(testcase.size() > 0, true);
for(int i=0 ; i<testcase.size() ; ++i) {
std::fstream input(testcase[i], std::fstream::binary|std::fstream::in);
std::stringstream buffer;
buffer << input.rdbuf();
ASSERT_EQ(buffer.str().length() > 10, true);
// ...
}
}
沒有留言:
張貼留言