1
我想測試功能:如何在調試版本中測試斷言,但在發佈中返回值?
#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的僅在調試版本啓用。 我想編寫能夠通過測試是否使用調試配置構建測試的測試(我認爲這是正確的方法?還是僅爲特定的構建配置編寫測試?)。因此,與一個測試輸入,例如,999:
- 如果與調試配置內置的測試應該會崩潰(從
assert()
)。 - 但是如果沒有調試配置,測試應該預期返回值爲
0
。
我知道EXPECT_DEBUG_DEATH
,它只有在使用調試配置構建時纔會發生崩潰。但是我沒有看到一個測試宏,只有在內置而沒有調試配置的情況下才會得到特定的返回值。
你在尋找'#ifdef NDEBUG'嗎? – user463035818
...或'#ifndef NDEBUG'在你的案例中 – user463035818
我認爲這是你的makefile的問題,而不是你的代碼的問題。在gcc/g ++中,默認情況下可以使用assert而不用調試marcos。我認爲你可以將這個功能封裝成2個相同的功能,一個可以在不受馬科斯干擾的情況下使用,另一個可以反向使用。 –