這樣的情境跟 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);
  // ...
        }
}
沒有留言:
張貼留言