我如何轉換下面的代碼使用boost單元測試框架:C++使用boost測試
#include <iostream>
#include <fstream>
#include "graph.hh"
int main(int argc, char **argv) {
const char* ifile = argv[1];
Graph gp;
gp.read_xml(ifile);
std::cout << "Checking number of nodes and edges..." << std::endl;
int nodes_expected = 16;
if(nodes_expected != gp.nodes()) {
std::cout << "Test Failed." << std::endl;
std::cout << "Expected: " << nodes_expected << std::endl;
std::cout << "Result: " << gp.nodes() << std::endl;
}
int edges_expected = 15;
if(edges_expected != gp.edges()) {
std::cout << "Test Failed." << std::endl;
std::cout << "Expected: " << edges_expected << std::endl;
std::cout << "Result: " << gp.edges() << std::endl;
}
return 0;
}
我讀過的(Boost Test)的文件,但它並沒有告訴我如何攝取參數從命令行。否則,我可以使用BOOST_CHECK_EQUAL。
那不是你的測試是專門針對一些特殊的'ifile'?如果是的話,稍後將不需要改變它,你可以硬編碼路徑。 –
測試應該是完全獨立的,這是不再的情況下,如果你需要提供的參數吧。如果您需要使用不同的文件進行測試,請編寫一個方法doTest(字符串文件名)並創建幾個測試用例,用不同的硬編碼參數調用此方法。通過這種方式,您的代碼庫或持續集成工具的其他用戶將能夠運行所有測試,而無需瞭解如何執行此操作的特殊知識。其他任何事情聽起來都不像我的單元測試。 – Philipp
有'ifiles'包含的一般特徵。我試圖創建一個測試套件來測試這些功能。其他測試套件更具體,我有這些硬編碼值。 – Stephen