2010-01-17 136 views
2

我正在尋找一個適合我需求的測試框架。以下是我需要在自動化測試執行步驟:組件測試的測試框架

  • 設置(有一些輸入文件,需要被讀取或拷貝到一些特定的文件夾。)
  • 執行(單獨運行的立場)
  • 推倒(清理,使系統在其舊州)
從這個

除此之外我也想有一些情報,以確保如果一個.cc文件改變時,可以驗證的所有測試應該運行更改。

我評估PyUnit中,CppUnit的使用scons的這一點。思考這個問題,以確保我的方向正確。你能推薦任何其他測試框架工具嗎?還有什麼其他的要求應該考慮選擇正確的測試框架?

+0

請描述您的被測系統。你在使用哪種語言/框架?是linux,windows還是mac。或者甚至可能是一個web應用程序。 – 2010-01-21 18:25:15

+0

System Under Test是一個在Windows平臺上運行的C++應用程序。 – sand 2010-01-23 12:40:09

回答

2

看完這篇文章http://gamesfromwithin.com/exploring-the-c-unit-testing-framework-jungle前一段時間之後,我去了CxxTest。

一旦你擁有的東西設置(需要安裝例如Python)的它很容易編寫測試(我是完全新的單元測試)

我用它在工作中,整合爲一個Visual Studio項目在我的解決方案。它在測試失敗時產生可點擊的輸出,並且每次構建解決方案時都會構建並運行測試。

+1

我最近切換到gTest,我還沒有用它在一個真正的項目,但它確實看起來不錯。我喜歡易用性,並且不需要像CxxTest那樣安裝python或perl。 – 2010-04-29 19:02:02

4

嘗試googletest AKA gTest它沒有比任何其他單元測試框架更糟糕,但也可以輕鬆擊敗一些易用性。不完全是您正在尋找的集成測試工具,但可以在大多數情況下輕鬆應用。這個wikipedia頁面可能對你有用。

下面是一個簡單的GTEST項目頁面上的副本:

#include <gtest/gtest.h> 

namespace { 

// The fixture for testing class Foo. 
class FooTest : public ::testing::Test { 
protected: 
    // You can remove any or all of the following functions if its body 
    // is empty. 

    FooTest() { 
    // You can do set-up work for each test here. 
    } 

    virtual ~FooTest() { 
    // You can do clean-up work that doesn't throw exceptions here. 
    } 

    // If the constructor and destructor are not enough for setting up 
    // and cleaning up each test, you can define the following methods: 

    virtual void SetUp() { 
    // Code here will be called immediately after the constructor (right 
    // before each test). 
    } 

    virtual void TearDown() { 
    // Code here will be called immediately after each test (right 
    // before the destructor). 
    } 

    // Objects declared here can be used by all tests in the test case for Foo. 
}; 

// Tests that Foo does Xyz. 
TEST_F(FooTest, DoesXyz) { 
    // Exercises the Xyz feature of Foo. 
} 

使用SCons可以照顧構建.cc他們被改變時,GTEST可以用來安裝和拆卸你的測試。

我只能補充一點,我們在某些情況下使用GTEST,並在幾乎所有其他的自定義的內部測試自動化框架。通常情況下,這些工具可能比編寫自己的工具更容易,而不是嘗試根據需求調整和調整其他工具。

一個不錯的選擇IMO,這是值得我們的自動化測試框架向移動,使用nosetests,再加上常見的程序庫(如啓動/停止服務,得到什麼地位,能夠在一定/禁用記錄組件等)。這爲您提供了一個相當易於使用的靈活系統。由於它使用python而不是C++或類似的東西,所以更多的人可能會忙於創建測試用例,包括QE,這些測試用例不一定需要能夠編寫C++。

+0

執行步驟包含運行可執行正在測試的組件接口的可執行文件。在這種情況下,TEST_F()將包含調用可執行文件的exec或系統函數,然後驗證輸出。你認爲gtest是否適合這種情況? – sand 2010-01-18 04:13:23

+1

我建議使用Python這樣的腳本語言來進行這種類型的測試。我會選擇鼻子測試。如果你更喜歡使用C++,當然,gtest可能是一個更好的選擇,那麼許多其他框架的易用性,如果沒有別的。 – Dmitry 2010-01-18 06:36:56