In einem Testfall möchte ich eine Funktion testen, die im Debug-Modus eine Assertion für ungültige Eingabe generiert. Dies stoppt leider Catch Testläufer. Gibt es eine Möglichkeit, diese Behauptung zu umgehen, damit der Testläufer weitermacht?Wie kann Assert im Komponententest im Debug-Modus umgangen werden?
Hier ist mein Testfall:
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") {
}
}
}
}
Behauptungen sind da, um gegen Fälle zu schützen, die * nie * in einem korrekten Programm passieren sollten. Warum testest du das Unit-Testen? Wenn innerhalb eines korrekten Programms ungültige Parameter auftreten (z. B. durch fehlerhafte Benutzereingaben), sollten Sie Ausnahmen anstelle von Assertions verwenden. – Quentin
@Quentin Tatsächlich ist es eine externe Bibliothek (generiert von Matlab Code Generator), die ich testen möchte. Wir erzeugten einen Wrapper für den generierten Code, aber jetzt nicht wirklich, wenn die Bibliothek mit ungültigen Daten umgehen kann, die im wirklichen Leben passieren könnten, da sie aus Eingabedateien stammen. Ich stimme zu, dass die Verwendung von Ausnahmen eine bessere Lösung sein kann als in unserem Fall. – tommyk
Dies scheint sehr ähnlich zu http://stackoverflow.com/q/38533272/102345 – JBRWilkinson