하지 :
::testing::KilledBySignal(signal_number) // Not available on Windows.
당신은 guide을 보일 것입니다.
그것은 나 (테스트하지)를 위해 그런 것 같다
:
창에
TEST_F(TestTest, testSigabrtDoesntHappen)
{
MyObject &myObject = MyObject::instance();
for(int i=0; i<2; i++){
EXPECT_EXIT(myObject.doWork(), ::testing::KilledBySignal(SIGBART)), "Regex to match error message");
ASSERT_TRUE(myObject);
}
ASSERT_TRUE(myObject);
}
:
// crt_signal.c
// compile with: /EHsc /W4
// Use signal to attach a signal handler to the abort routine
#include <stdlib.h>
#include <signal.h>
#include <tchar.h>
void SignalHandler(int signal)
{
if (signal == SIGABRT) {
// abort signal handler code
} else {
// ...
}
}
int main()
{
typedef void (*SignalHandlerPointer)(int);
SignalHandlerPointer previousHandler;
previousHandler = signal(SIGABRT, SignalHandler);
abort(); //emit SIGBART ?
}
:
당신은 이러한 종류의 코드와 함께 자신을 신호 처리해야합니다
doc
하지만 당신이 한 번 SIGBART에 코드를 실행 시키면, 소프트웨어를 릴리스하기 전에 제거해야하는 코드에 몇 가지 문제가 있습니다.
하지만 당신이 정말로 (googletest과) 코드를 디버깅 할 경우, 디버거와 함께 이것을 사용 : 당신은 다시 그것을 다른 옵션을 추가 할 수 있습니다
foo_test --gtest_repeat=1000 --gtest_break_on_failure
다음 문서를 확인 :)
을
광산은 windows, mac, linux이므로 KilledBySignal을 할 수 없습니까? – Michele
@Michele 신호가 창에 표시되면 엉망입니다 (실제로는 존재하지 않는다고 생각했습니다). GoogleTest가 Window에서 해당 코드를 절대 지원하지 않을 것이라고 생각합니다. –
우리가 창문이 아니라면 그냥 시험을 볼 수 있습니다. 그래도 나는 너의 생각을 좋아한다. 나는 가이드의 링크를 보았지만, 내가하고있는 것에 적용하는 것은 어렵다. – Michele