모니터/출력 방출 Qt-신호
-
21-12-2019 - |
문제
나는 다양한 경우에 방출되는 몇 가지 신호를 정의했습니다.
signals:
void buttonXClicked(int x);
void numButtonsChanged(int num);
이제 이러한 신호가 어떻게 보이는지, 매개변수가 올바른지 확인하고 싶습니다.신호를 모니터링하는 방법에는 여러 가지가 있는 것 같습니다.
에서 우편 여기서 rohanpm은 매개변수를 나타냅니다. -vs
여기에 더 가깝게 지정되어 있습니다.http://qt-project.org/doc/qt-4.8/qtestlib-manual.html#qtestlib-command-line-arguments
이는 내가 필요한 정보를 얻는 우아하고 빠른 방법인 것 같습니다.하지만 솔직히 말해서 내가 어떻게, 어디로 달려야 하는지 이해할 수가 없어요. -vs
.그것은의 일부가 아닙니다 qmake
.또 어디에 넣어야 하나요?(저는 qt를 처음 접했습니다).
그와 관련된 QSignalSpy 기존 클래스를 변경해야 할 것 같나요?"외부" 접근 방식도 있지 않나요?
슬롯을 테스트하는 방법에 대한 많은 문서가 있지만 신호와 관련이 있습니까?제가 좀 사용해도 될까요? printf
또는 cout
어딘가에?
해결책
MOC와 그 기능에 대해 더 읽는 동안이 아이디어를 얻었습니다.(적어도 NetBeans를 사용하는 동안) 내 파일 buttonTest.cpp 파일 moc_buttontest.cpp 파일에 추가로 추가됩니다.내부는 다음과 같은 메소드입니다.
// SIGNAL 0
void ButtonTest::buttonXClicked(int _t1)
{
void *_a[] = { 0, const_cast<void*>(reinterpret_cast<const void*>(&_t1)) };
QMetaObject::activate(this, &staticMetaObject, 0, _a);
}
.
나는 그것이 쉽지 않다는 것을 거의 믿을 수 없었지만 방금
를 추가했습니다.std::cout <<"buttonXClicked: "<<_t1;
.
그리고 내가 원하는 것을 정확하게하는 것 같습니다.
다른 팁
링크된 문서에 따르면 다음과 같습니다.
사용 가능한 모든 테스트 데이터를 사용하여 toUpper 테스트 함수를 실행하고 0이라는 테스트 데이터를 사용하여 toInt 테스트 함수를 실행합니다(지정된 테스트 데이터가 없으면 관련 테스트가 실패합니다).
/myTestDirectory$ testMyWidget -vs -eventdelay 500
여기서 testMyWidget은 빌드된 테스트 바이너리입니다.여기에 간다 -vs
선적 서류 비치:
-VS는 방출되는 모든 신호를 출력합니다
도움말 출력을 grep하면 추가 문서도 있습니다.
/myTestDirectory$ testMyWidget --help | grep "\-vs"
-vs outputs every signal that gets emitted
혹시 글쓰기에 어려움이 있다면 QTestLib
기반 단위 테스트는 Qt 4를 사용하는 데 좋은 출발점이 됩니다.