我測試一個C/C++應用測試框架。對於大多數方法,我可以使用CppUTest編寫單元測試。 但也有一些不是,我想編寫集成/端到端測試來測試這些方法。 我想測試端到端C++應用
正確的輸出文件是否產生
爲invalud參數適當的錯誤信息,則打印(它是一個命令行工具)
它顯示正確的輸出messgaes
我的問題是是否有工具,或者我應該寫一些腳本給我喚起我的應用程序,捕獲輸出等?如果是,如何啓動這些腳本?從CppUtest中調用它們?
我測試一個C/C++應用測試框架。對於大多數方法,我可以使用CppUTest編寫單元測試。 但也有一些不是,我想編寫集成/端到端測試來測試這些方法。 我想測試端到端C++應用
正確的輸出文件是否產生
爲invalud參數適當的錯誤信息,則打印(它是一個命令行工具)
它顯示正確的輸出messgaes
我的問題是是否有工具,或者我應該寫一些腳本給我喚起我的應用程序,捕獲輸出等?如果是,如何啓動這些腳本?從CppUtest中調用它們?
我知道幾種方法來測試正確的輸出:
如果使用CMake和CTEST,您可以使用CTEST你的程序的輸出與預期輸出進行比較。只適用於文本輸出(正常情況下是屏幕輸出),如果輸出隨機數字的時間/日期和類似的東西,將不起作用。在CMake manuel中查找add_test_output_check()。
如果你的程序不寫硬編碼到stdout,那麼你可以通過一個std :: ostringstream事後使用您喜歡的單元測試框架測試字符串的內容。
最後但並非最不重要,你可以使用DUP2()來定義其他文件描述符輸出和錯誤,執行測試,並在年底檢查文件(S)的內容。
對於輸出文件,我猜你必須創建一個參考輸出文件,然後將該文件的內容與測試生成的文件進行比較:編寫一個加載這兩個文件的測試函數,並執行一個memcmp( )的數據。
@特寫和downvoters:「相反,描述問題,什麼迄今所做來解決它。」我想我已經描述過了。我不想要一個特定的軟件建議,相反 - 沒有經驗 - 我很好奇別人在這種情況下做了什麼。 – robert