문제

나는 다양한 경우에 방출되는 몇 가지 신호를 정의했습니다.

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를 사용하는 데 좋은 출발점이 됩니다.

QTestLib 매뉴얼

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top