Size: a a a

2020 June 03

AS

Anatoly Shirokov in Qt
jon pedro
День добрый, не подскажите статей про qtest, что-то не совсем вывожу в статью на сайте qt с применением тестов, гугл в основном ерунду выдаёт. На хабре статья от 12 года вообще не понятно почему у автора запускается
источник

AS

Anatoly Shirokov in Qt
почему сразу в гугл, а не в документацию?
источник

jp

jon pedro in Qt
Anatoly Shirokov
почему сразу в гугл, а не в документацию?
Потому что я хотел хоть какой-то примитивный пример запустить и увидеть результат, в отличии от примеров из гугла, с документации код запустился, но я ничего не получил на выходе и не совсем понял что должен был бы получить)
источник

AS

Anatoly Shirokov in Qt
jon pedro
Потому что я хотел хоть какой-то примитивный пример запустить и увидеть результат, в отличии от примеров из гугла, с документации код запустился, но я ничего не получил на выходе и не совсем понял что должен был бы получить)
тест - это набор утверждений. если какое-то утверждение ломается, значит что-то нарушено, такой тест считается провалившимся (failed)
источник

AS

Anatoly Shirokov in Qt
я запускаю тесты из Qt Creator
источник

AS

Anatoly Shirokov in Qt
источник

jp

jon pedro in Qt
Anatoly Shirokov
тест - это набор утверждений. если какое-то утверждение ломается, значит что-то нарушено, такой тест считается провалившимся (failed)
Вот очевидно, что если я поменяю в строчке
 QVERIFY(1!=2)

у меня этот кейс должен лечь, но я запускаю и все нормально. Может я пример не так запускаю? Конструктора у него нет, получается его не проинитить. Всё тесты в слотах, значит должен быть какой-то сигнал для их вызова, в примере этого нет. И не совсем понимаю куда смотреть. Запускаю так же в qtcreator'e
источник

jp

jon pedro in Qt
сделал просто файл мэйновский, в который пихнул определение класса из примера на сайте qt, в теле мэйна просто

int main(int argc, char *argv[])
{
   QCoreApplication a(argc, argv);
   QTextStream cout(stdout);
   cout << "Hello" << endl;

   return a.exec();
}
источник

AS

Anatoly Shirokov in Qt
jon pedro
Вот очевидно, что если я поменяю в строчке
 QVERIFY(1!=2)

у меня этот кейс должен лечь, но я запускаю и все нормально. Может я пример не так запускаю? Конструктора у него нет, получается его не проинитить. Всё тесты в слотах, значит должен быть какой-то сигнал для их вызова, в примере этого нет. И не совсем понимаю куда смотреть. Запускаю так же в qtcreator'e
источник

AS

Anatoly Shirokov in Qt
jon pedro
сделал просто файл мэйновский, в который пихнул определение класса из примера на сайте qt, в теле мэйна просто

int main(int argc, char *argv[])
{
   QCoreApplication a(argc, argv);
   QTextStream cout(stdout);
   cout << "Hello" << endl;

   return a.exec();
}
источник

AS

Anatoly Shirokov in Qt
тест должен быть оформлен определенным образом
источник

jp

jon pedro in Qt
Anatoly Shirokov
тест должен быть оформлен определенным образом
Я про это читал, но не совсем понял что за файл moc, и как его приготовить
источник

AS

Anatoly Shirokov in Qt
он готовится автоматически при запуске qmake
источник

jp

jon pedro in Qt
Anatoly Shirokov
он готовится автоматически при запуске qmake
И название его совпадает с именем класса?
источник

AS

Anatoly Shirokov in Qt
jon pedro
И название его совпадает с именем класса?
c именем файла
источник

AS

Anatoly Shirokov in Qt
если пишите mytest.cpp, то включаете #include "mytest.moc"
источник

jp

jon pedro in Qt
Anatoly Shirokov
если пишите mytest.cpp, то включаете #include "mytest.moc"
Т.е я создаю файл. cpp с текстом теста как в примере
Потом подключаю с помощью макроса и инклуды мок файл с названием файла до cpp и все должно заработать?
источник

AS

Anatoly Shirokov in Qt
Да, как здесь
источник

AS

Anatoly Shirokov in Qt
Но чтобы сигнал слоты проверять надо свой QEventLoop запускать
источник

jp

jon pedro in Qt
Anatoly Shirokov
Но чтобы сигнал слоты проверять надо свой QEventLoop запускать
Мок файл и макрос должны быть в main файле же?
источник