2011-10-10 30 views
1

我想爲測試用例的nUnit的類別屬性的等價函數。我已經繼承了大量的C++測試用例,其中一些是單元測試,其中一些是長期運行的集成測試,我需要設置我的持續集成構建過程來忽略集成測試用例。是否有與測試用例的nunit的Category屬性相當的cppunit?

我寧願簡單地標記所有集成測試用例,並指示cppunit在CI構建過程中排除它們。

我可以忽略cppunit的一個特性,還是有其他方法可以實現嗎?

回答

4

沒有本機測試類別屬性。 CppUnit比這個簡單一點。 CppUnit甚至沒有爲您的應用程序提供命令行測試運行器。您必須編寫自己的簡單main()函數來執行TestRunner。

這是規範的例子。

#include <cppunit/extensions/TestFactoryRegistry.h> 
#include <cppunit/ui/text/TestRunner.h> 

int main(int argc, char **argv) 
{ 
    CppUnit::TextUi::TestRunner runner; 
    CppUnit::TestFactoryRegistry &registry = CppUnit::TestFactoryRegistry::getRegistry(); 
    runner.addTest(registry.makeTest()); 
    bool wasSuccessful = runner.run("", false); 
    return wasSuccessful; 
} 

TestSuite是TestCases的集合。 TestRunner執行一系列TestSuite。請注意,在本例中,它從TestFactoryRegistry中獲取TestSuites,您可以使用對CPPUNIT_TEST_SUITE_REGISTRATION(MyTestSuite)的宏調用來填充TestSuite。但TestCases仍然是您的測試課程。

你當然可以自己實現這些屬性,就像你用一個門面擴展任何類一樣。從TestSuite中派生你的新類。將屬性添加到您可以選擇的測試中,然後填充您的TestRunner執行「只是單元測試」或「只是集成測試」或任何您想要的。

對於這個問題,TestRunner可以根據名稱選擇要執行的測試。如果您使用ITFoo,ITBar等前綴命名所有集成測試,則可以選擇以「IT」開頭的所有測試。

有幾十種方法可以解決您的問題,但您必須自己動手。如果你可以編寫值得單元測試的代碼,那對你來說應該不是什麼大問題。 :-)

相關問題