gpt4 book ai didi

c++ - 如何断言未引发异常?

转载 作者:行者123 更新时间:2023-11-30 05:47:06 25 4
gpt4 key购买 nike

我正在为我的应用程序使用 Visual Studio 2013 中的单元测试功能。

我正在尝试为一个类编写测试,通过该类将特定对象传递给构造函数,并且根据传递的对象的状态,可能会抛出异常。

我已经为每个对象状态写了 stub ,并为构造函数会抛出异常的场景编写了测试用例,如下所示:

TEST_METHOD(constructor_ExceptionRaised)
{
// arrange
const InvalidStub stub;

// act
auto act = [stub] { const Foo foo(stub); };

// assert
Microsoft::VisualStudio::CppUnitTestFramework::Assert::ExpectException
<MyException>(act);
}

我应该如何处理我想传递有效 stub 并简单地断言没有引发异常的场景?我只想关注未抛出的特定 MyException(而不是任何异常)。

我已经拼凑了一个测试方法如下,但不确定是否有一种简单的“单行”方法可以满足我的需要:

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
}

最佳答案

我使用以下测试方法来证明构造函数不会抛出异常:

TEST_METHOD(constructor_NoException)
{
// arrange
const ValidStub stub;

// act
const Foo foo(stub);

// assert
Microsoft::VisualStudio::CppUnitTestFramework::Assert::IsTrue(true);
}

当引发异常时,测试自动失败。异常详细信息在失败消息中给出。

当没有出现异常时,测试将通过,因为我断言 true == true

关于c++ - 如何断言未引发异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28688786/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com