Je veux tester une fonction:Comment faire pour tester assert dans la construction de débogage, mais a renvoyé la valeur dans la version?
#include <cassert>
int my_func(int myParam) {
int ret = 0
if (myParam >= 10) {
assert(false);
// Logger call like `qCritical << "myParam is too big. Returning 0";`
} else {
ret = myParam * 2;
}
return ret;
}
assert()
s ne sont activés que dans la version de débogage. Je veux écrire des tests qui passeront si les tests ont été construits avec la configuration de débogage ou pas (je suppose que c'est la bonne façon ou est-ce que c'est raisonnable d'écrire des tests seulement pour une configuration spécifique?). Donc, avec une entrée de test, par exemple, 999:
- Si elle est construite avec la configuration de débogage le test doit attendre un accident (du
assert()
). - Mais sans la configuration de débogage, le test doit s'attendre à une valeur de retour de
0
.
Je connais EXPECT_DEBUG_DEATH
, qui ne s'attend à un crash que s'il est construit avec la configuration de débogage. Mais je ne vois pas une macro de test pour attendre une valeur de retour spécifique seulement si construit sans la configuration de débogage.
êtes-vous à la recherche de '#ifdef NDEBUG'? – user463035818
... ou '#ifndef NDEBUG' dans votre cas – user463035818
Je pense que c'est le problème de votre makefile, pas le problème de votre code. En gcc/g ++, vous pouvez utiliser assert sans déboguer marcos par défaut. Je pense que vous pouvez sceller cette fonction à 2 mêmes fonctions, on peut utiliser sans interférer par marcos, l'autre par l'inverse. –