我正在尝试从测试类中的WhilePrintingRecords;
Not booleanVar ItemThreeFound;
类调用函数。
如何断言Calculator
抛出的异常消息等于我期望的异常消息?
我的计算器代码:
Calculator
这是我的测试类:
void Calculator::add() {
if (_stack.empty()) {
throw std::runtime_error("empty stack");
}
else if (_stack.size() == 1) {
throw std::runtime_error("Wrong Value");
}
else if (_stack.size() > 2) {
throw std::runtime_error("Wrong Value");
}
else {
double res = this->pop() + this->pop();
this->push(res);
}
}
它不起作用的原因:lambda函数返回的值的类型为TEST_METHOD(should_throw_error_if_stack_is_empty) {
Assert::AreEqual([] {
Calculator* myCalculator = new Calculator();
try {
myCalculator->add();
}
catch (std::runtime_error const& ex)
{
return (ex.what());
}
}, "empty stack");
}
,而我的表达式类型为const char*
。我该怎么办?
我一般遵循良好做法的方法吗?我的意思是在单元测试中捕获类抛出的异常?