Pergunta

Defini alguns sinais que são emitidos em diferentes ocasiões:

signals:
    void buttonXClicked(int x);
    void numButtonsChanged(int num);

Agora gostaria apenas de ver como são esses sinais e se os parâmetros estão corretos.Parece que existem várias abordagens para monitorar os sinais.

No publicar aqui rohanpm refere-se ao parâmetro -vs que é especificado mais de perto aqui:http://qt-project.org/doc/qt-4.8/qtestlib-manual.html#qtestlib-command-line-arguments

Esta parece ser uma maneira elegante e rápida de obter as informações de que preciso.Mas, para ser sincero, não consigo entender como e para onde devo correr -vs.Não faz parte qmake.Onde mais devo colocá-lo?(Sou muito novo no qt).

Relacionado ao QSignalSpy parece ser necessário alterar as classes existentes?Não existe também uma abordagem “externa”?

Há muita documentação sobre como testar um slot - mas relacionada a sinais?Eu poderia usar um printf ou cout em algum lugar?

Foi útil?

Solução

Tive essa ideia enquanto lia mais sobre o moc e sua funcionalidade.(Pelo menos enquanto uso o NetBeans) recebo adicional ao meu arquivo ButtonTest.cpp o arquivo moc_ButtonTest.cpp.Dentro está um método chamado:

// SIGNAL 0
void ButtonTest::buttonXClicked(int _t1)
{
    void *_a[] = { 0, const_cast<void*>(reinterpret_cast<const void*>(&_t1)) };
    QMetaObject::activate(this, &staticMetaObject, 0, _a);    
}

Eu mal podia acreditar que era tão fácil, mas acabei de adicionar um

std::cout <<"buttonXClicked: "<<_t1;

e parece fazer exatamente o que eu quero.

Outras dicas

Como escreve a documentação vinculada:

Executa a função de teste toUpper com todos os dados de teste disponíveis e a função de teste toInt com os dados de teste chamados zero (se os dados de teste especificados não existirem, o teste associado falhará).

/myTestDirectory$ testMyWidget -vs -eventdelay 500

onde testMyWidget é o binário de teste construído.Aqui vai o -vs documentação:

-vs produz cada sinal que é emitido

Há também mais documentação se você usar a saída de ajuda:

/myTestDirectory$ testMyWidget --help | grep "\-vs"
-vs outputs every signal that gets emitted

Se acontecer de você ter problemas para escrever QTestLib baseados em testes de unidade, este é um bom ponto de partida para você com o Qt 4:

Manual do QTestLib

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top