0
在测试案例中,我想测试一个函数,它在调试模式下为无效输入生成一个断言。这不幸停止了Catch测试赛跑者。有没有办法绕过这个断言,让测试跑步者继续前进?如何在调试模式下在单元测试中忽略断言?
这里是我的测试案例:
SCENARIO("Simple test case", "[tag]") {
GIVEN("some object") {
MyObject myobject;
WHEN("object is initialized with invalid data") {
// method init generates an assertion when parameters are invalid
bool result = myObject.init(nullptr, nullptr, nullptr, nullptr);
REQUIRE(false == result);
THEN("data processing can't be started") {
}
}
}
}
断言是为了防止在正确的程序中不应该发生的情况。你为什么要进行单元测试?如果在正确的程序中发生无效参数(例如来自格式错误的用户输入),则应该使用异常而不是断言。 – Quentin
@Quentin其实它是我想测试的外部库(由Matlab代码生成器生成)。我们为生成的代码生成了一个包装,但是如果库可以处理可能在现实生活中发生的无效数据(因为它们来自输入文件),现在不会真的生成这个包装。我同意使用异常可能比我们的情况下的断言更好。 – tommyk
这看起来很像http://stackoverflow.com/q/38533272/102345 – JBRWilkinson