我在測試函數中使用多個斷言,但是當(例如)第一個斷言失敗時,斷言的其餘部分不再執行。 有沒有辦法使CppUnit斷言(CPPUNIT_ASSERT)失敗後不離開testfunction?例如不中止斷言。非中止斷言CppUnit
我找到了這個:http://cppunit.sourceforge.net/cppunit2/doc/但是「檢查」沒有在庫中實現。
我在測試函數中使用多個斷言,但是當(例如)第一個斷言失敗時,斷言的其餘部分不再執行。 有沒有辦法使CppUnit斷言(CPPUNIT_ASSERT)失敗後不離開testfunction?例如不中止斷言。非中止斷言CppUnit
我找到了這個:http://cppunit.sourceforge.net/cppunit2/doc/但是「檢查」沒有在庫中實現。
單元測試有兩種思路。一個是單元測試應該只測試一件事情,如果你想測試兩件事情,你應該有兩個測試。好處是你上面描述的問題完全被消除了,而缺點是編寫額外的測試需要幾秒鐘的時間。另一個想法是,一個測試可以測試多個事物,並認爲失敗的測試很少發生,並且可以被開發人員識別並修復。優點是複雜的設置只需要一次完成,當然缺點是它在第一次故障時停止測試,隱藏問題的真實數量和身份。
我的方法是務實。如果您可以脫離多個斷言,並且仍然使用一個測試來開發並輕鬆測試多個屬性,那就做好準備 - 但要爲失敗做好準備,並且如果您遇到了描述的情況,請將測試重構爲多個測試並不要浪費時間在一次測試中掙扎。測試的總數絕對是一個非因素。適當數量的測試是您需要徹底評估代碼的數量。
好的,謝謝你的回覆。這似乎是沒有解決方法,所以我會分開我的測試更多。 – Nielske87
您是否嘗試過CPPUT_CHECK而不是CPPUNIT_CHECK? –
是的,我做過了,但沒有包括在內 – Nielske87
這似乎是一種非常糟糕的做法。你的測試應該失敗或者通過,對哪個斷言無關緊要。如果它失敗的原因不明確,那麼你應該重構測試,而不是試圖使殘疾斷言... – BartoszKP