測試我知道的CppUnit能夠測試異常經:的CppUnit如何實現對異常
CPPUNIT_ASSERT_THROW(expression, ExceptionType);
任何人都可以解釋如何CPPUNIT_ASSERT_THROW()
實現?
測試我知道的CppUnit能夠測試異常經:的CppUnit如何實現對異常
CPPUNIT_ASSERT_THROW(expression, ExceptionType);
任何人都可以解釋如何CPPUNIT_ASSERT_THROW()
實現?
編輯:我已經提出了邁克爾安德森的回答,因爲他對CppUnit的確切代碼更具體,而我的答案更一般。
僞代碼,它會是這樣的:
try
{
// Test code that should throw
}
catch(ExceptionType e)
{
// Correct exception - handle test success
return;
}
catch(...)
{
// Wrong exception, handle test failure.
return;
}
// No exception, handle test failure.
return;
的CppUnit的測試失敗報告通過自定義異常類型的投擲完成。爲了簡單起見,我們將在這裏稱爲CppUnitException
。
CPPUNIT_ASSERT_THROW
是將擴大的東西,基本上是這樣一個宏:
try
{
expression;
throw CppUnitException("Expected expression to throw");
}
catch(const ExceptionType & e)
{
}
如果expression
拋出(因爲我們希望它),我們陷入了catch
塊,什麼都不做。
如果expression
確實是而不是 throw,執行過程繼續執行到將觸發測試失敗的代碼行CppUnitException
。
當然,CPPUNIT_ASSERT_THROW
宏的實現實際上更有趣,因此線條和文件信息也被報告,但這是它如何工作的一般要點。