1
我在我的應用程序中使用Visual Studio 2013中的單元測試功能。如何斷言沒有引發異常?
我想寫一個類的測試,您將特定的對象傳遞給構造函數,並根據傳遞的對象的狀態,可能會引發異常。
我已經寫存根每個對象的狀態,並且已經寫測試用例的場景中構造函數將拋出一個異常,如下所示:
TEST_METHOD(constructor_ExceptionRaised)
{
// arrange
const InvalidStub stub;
// act
auto act = [stub] { const Foo foo(stub); };
// assert
Microsoft::VisualStudio::CppUnitTestFramework::Assert::ExpectException
<MyException>(act);
}
我應該如何接近,我想通過一個場景有效的存根,只是斷言沒有例外被提出?我想純粹關注不被拋出的特定MyException
(而不是任何例外)。
我已經破解出一種測試方法如下,但不知道是否有一個簡單的「1號線」的辦法,將適合我的需求:
TEST_METHOD(constructor_NoException)
{
// arrange
const ValidStub stub;
try
{
// act
const Foo foo(stub);
}
// assert
catch (MyException e)
{
Microsoft::VisualStudio::CppUnitTestFramework::Assert::Fail();
}
catch (...)
{
Microsoft::VisualStudio::CppUnitTestFramework::Assert::Fail();
}
}
我沒有信心,我也需要失敗「的任何異常「被提出,因爲測試運行者應該(?)拿起(例如測試失敗)。按照同樣的推理,將基本上以下是同樣的測試:
TEST_METHOD(constructor_NoException)
{
// arrange
const ValidStub stub;
// act
const Foo foo(stub);
// assert
// no exception
}
在兩個「catch」塊中,一個必然是多餘的(因爲他們也是這樣做的)。無論如何,一種可能的選擇是從「行爲」功能返回發生事件的指標。使用測試框架檢查返回值的相關方法。 – 2015-02-24 06:19:49
我對Visual Studio的單元測試框架一無所知,但大多數單元測試框架將在測試方法出現異常時導致測試失敗。 – immibis 2015-02-24 06:35:46
@ Cheersandhth.-Alf - 如果函數返回void,是否有效聲明函數指針是void指針? – camelCase 2015-02-24 06:54:56