2012-01-01 79 views
1

一般而言,良好的面向對象實踐足以保持單元測試的獨立性。然而,當程序崩潰,破壞內存空間等事情變得非常糟糕時,事情可能會蔓延到相鄰的測試中,並給出令人誤解的結果,或者只是簡單地引起討厭的測試框架。有沒有人知道任何現有的單元測試框架都有很高的隔離級別來防止這種事情發生?舉個例子,一個簡單的方法就是在命令行上一次執行一個設備,但我擔心很難很好地彙總結果。我現在想要的這個C++項目在cppunit中,但是如果像Google Test Framework或CTest這樣的支持有這種支持,我還沒有死在那個框架上。我簡單地看看那兩個,我不認爲我看到任何有這種嚴格隔離的東西。我主要對Linux感興趣,但跨平臺將是理想的。隔離單元測試

在任何情況下,如果有人感興趣,我可以使用cppunit使用小型Linux(可能是其他人)的概念證明。查找文件在 https://github.com/JohnDMcMaster/uvudec/tree/master/uvudec/testing/framework 你會想helper_macros。*,serialized_test_result。*和test_caller。*

+0

爲什麼難以彙總結果? – 2012-01-01 04:42:23

+2

我不確定我是否遵循這一點。如果單元測試崩潰你的測試程序,後續的測試將不會運行。當您修復測試(或測試中的系統)時,隨後的測試運行。你能舉一個你想要防止的泄漏的例子嗎? – Johnsyweb 2012-01-01 04:46:29

回答

0

有這樣的沒有框架。您需要爲每個測試製作獨立的測試套件,以便它們是獨立的文件。這將允許它們完全隔離地運行。

取而代之,您可以使用boost.test,因爲它可以檢測Windows上的內存泄漏,這是我認爲的正確方向的一步。

+0

您應該添加Boost.Test只能檢測Windows下的內存泄漏。 – 2012-03-07 13:30:14

+0

@honk - 不知道。謝謝! – 2012-03-07 13:35:02

0

對於這種事情自然隔離單元的過程中,我會說這也是此類問題的自然粒度級別:

如果所有的單元測試被編譯成一個可執行,很有可能它們速度太快,以至於你不在乎是否崩潰會迫使你重複(一組)套件。另一方面,如果你所有的單元測試都是如此之多並且需要很長時間才能運行,那麼一箇中斷測試運行的崩潰是一個主要的煩惱,那麼你應該將它們分成幾個exes以使你的單元測試更多ganular。 (鏈接時間,開發人員很容易只能運行一個子集,...)