這是一個後續行動,我的最後一個問題的工作:GoogleTest框架似乎不是lambda函數(跟進)
Google Test macros seem not to work with Lambda functions
在這種情況下提到的解決方案爲特定的情況下,即lambda中的模板類的構造函數可以包裝在parantheses中,並且構建會成功。我接受了這個答案。但問題仍然存在,GoogleTest框架似乎不適用於Lambda函數。我在文檔中看不到任何內容。
我做下面的測試,
TEST(errorhandlingInterpolator, NOTtoolargeInput) {
ASSERT_NO_THROW(throw);
}
這將導致測試失敗。好。
然後,我這樣做,
TEST(errorhandlingInterpolator, NOTtoolargeInput) {
ASSERT_NO_THROW([](){throw;});
}
這將導致測試不許失敗。奇怪。所以,最後要徹底地講一些(如此微不足道的),我測試了以下幾點。
void dummy() { throw; }
TEST(errorhandlingInterpolator, NOTtoolargeInput) {
ASSERT_NO_THROW(throw);
}
並且異常導致測試失敗。都好。
這引發了我的頭腦中的一面旗幟,即使是使用lambda函數也不例外。我認爲他們就像普通的功能一樣,除了匿名。顯然他們這樣做。以下兩個問題談論這一點。
Can C++ lambda-expression throw?
throw an exception from a lambda expression, bad habit?
所以,它確實似乎歸結爲一個事實,即在谷歌測試框架的宏不與拉姆達職能的工作。
我想哭。我不太瞭解我的lambda表達式,我開始講述一些與我無關的東西。 :'( –
yup!似乎合法,這是問題所在,謝謝! –