Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. Qt Unit test in a project
Forum Updated to NodeBB v4.3 + New Features

Qt Unit test in a project

Scheduled Pinned Locked Moved Solved General and Desktop
31 Posts 6 Posters 15.4k Views 4 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • H Offline
    H Offline
    HemantSuryawanshi
    wrote on last edited by
    #22

    @jsulm are you trying to say that I also need to add the calculator class into tests project? I already have the Calculator class implemented into src project.

    jsulmJ 1 Reply Last reply
    0
    • H HemantSuryawanshi

      @jsulm are you trying to say that I also need to add the calculator class into tests project? I already have the Calculator class implemented into src project.

      jsulmJ Offline
      jsulmJ Offline
      jsulm
      Lifetime Qt Champion
      wrote on last edited by
      #23

      @HemantSuryawanshi said in Qt Unit test in a project:

      are you trying to say that I also need to add the calculator class into tests project?

      No, you need to add a reference to that file to your test project, something like:

      add_executable(${PROJECT_NAME}
          PATH_TO/calculator.cpp
          tst_unittest.cpp
          ...
      )
      

      If the code you want to test compiles to a lib you could instead add a dependency to this lib.

      https://forum.qt.io/topic/113070/qt-code-of-conduct

      1 Reply Last reply
      0
      • H Offline
        H Offline
        HemantSuryawanshi
        wrote on last edited by
        #24

        @jsulm Its working now. Thanks for response

        1 Reply Last reply
        0
        • H Offline
          H Offline
          HemantSuryawanshi
          wrote on last edited by
          #25

          Hi, I also want to include Qt Quick Test in same project. I added required directives into project. but I have one problem that I already have the main definition and it will not take another main definition. Please tell me how cam I add

          QUICK_TEST_MAIN(example)
          

          this code into main function? @jsulm

          jsulmJ 1 Reply Last reply
          0
          • H HemantSuryawanshi

            Hi, I also want to include Qt Quick Test in same project. I added required directives into project. but I have one problem that I already have the main definition and it will not take another main definition. Please tell me how cam I add

            QUICK_TEST_MAIN(example)
            

            this code into main function? @jsulm

            jsulmJ Offline
            jsulmJ Offline
            jsulm
            Lifetime Qt Champion
            wrote on last edited by
            #26

            @HemantSuryawanshi said in Qt Unit test in a project:

            I have one problem that I already have the main definition

            Are you trying to test a cpp file containing main()?
            Why?
            There should not be anything to test. If there is something you want to test, then move that functionality in functions/methods outside of that source file.

            https://forum.qt.io/topic/113070/qt-code-of-conduct

            H 1 Reply Last reply
            0
            • jsulmJ jsulm

              @HemantSuryawanshi said in Qt Unit test in a project:

              I have one problem that I already have the main definition

              Are you trying to test a cpp file containing main()?
              Why?
              There should not be anything to test. If there is something you want to test, then move that functionality in functions/methods outside of that source file.

              H Offline
              H Offline
              HemantSuryawanshi
              wrote on last edited by
              #27

              @jsulm No I want to test qml file which is present in my src project. And I want to integrate both cpp testing and qml testing into in single project which is tests. thats why I want to integrate that macro in main function. How can I do that, any idea?

              jsulmJ 1 Reply Last reply
              0
              • H HemantSuryawanshi

                @jsulm No I want to test qml file which is present in my src project. And I want to integrate both cpp testing and qml testing into in single project which is tests. thats why I want to integrate that macro in main function. How can I do that, any idea?

                jsulmJ Offline
                jsulmJ Offline
                jsulm
                Lifetime Qt Champion
                wrote on last edited by
                #28

                @HemantSuryawanshi said in Qt Unit test in a project:

                How can I do that, any idea?

                Make sure you have only one main() in your test project.

                https://forum.qt.io/topic/113070/qt-code-of-conduct

                H 1 Reply Last reply
                0
                • jsulmJ jsulm

                  @HemantSuryawanshi said in Qt Unit test in a project:

                  How can I do that, any idea?

                  Make sure you have only one main() in your test project.

                  H Offline
                  H Offline
                  HemantSuryawanshi
                  wrote on last edited by
                  #29

                  @jsulm

                  #include <QtTest>
                  #include <QDebug>
                  #include <tst_unittest.cpp>
                  #include <tst_userdata.cpp>
                  
                  #include <QtQuickTest/quicktest.h>
                  QUICK_TEST_MAIN(example)
                  
                  int main(int argc, char** argv)
                  {
                     int failedTests = 0;
                     failedTests += QTest::qExec(new UnitTest, argc, argv);
                     failedTests += QTest::qExec(new TestUserData, argc, argv);
                  
                     if(failedTests > 0){
                         qDebug() << "total number of failed tests: " << failedTests;
                     }else{
                         qDebug() << "all tests passed :)";
                     }
                     return failedTests;
                  }
                  
                  

                  This is my main file. My project contains multiple unit tests including Qt test and Qt Quick test. In this I am getting error that redefinition of main function due to the QUICK_TEST_MAIN Macro.

                  jsulmJ 1 Reply Last reply
                  0
                  • H HemantSuryawanshi

                    @jsulm

                    #include <QtTest>
                    #include <QDebug>
                    #include <tst_unittest.cpp>
                    #include <tst_userdata.cpp>
                    
                    #include <QtQuickTest/quicktest.h>
                    QUICK_TEST_MAIN(example)
                    
                    int main(int argc, char** argv)
                    {
                       int failedTests = 0;
                       failedTests += QTest::qExec(new UnitTest, argc, argv);
                       failedTests += QTest::qExec(new TestUserData, argc, argv);
                    
                       if(failedTests > 0){
                           qDebug() << "total number of failed tests: " << failedTests;
                       }else{
                           qDebug() << "all tests passed :)";
                       }
                       return failedTests;
                    }
                    
                    

                    This is my main file. My project contains multiple unit tests including Qt test and Qt Quick test. In this I am getting error that redefinition of main function due to the QUICK_TEST_MAIN Macro.

                    jsulmJ Offline
                    jsulmJ Offline
                    jsulm
                    Lifetime Qt Champion
                    wrote on last edited by
                    #30

                    @HemantSuryawanshi said in Qt Unit test in a project:

                    I am getting error that redefinition of main function due to the QUICK_TEST_MAIN Macro

                    Of course, you have two main() functions now.
                    I suggest you split your C++ and Qt Quick tests.

                    https://forum.qt.io/topic/113070/qt-code-of-conduct

                    H 1 Reply Last reply
                    0
                    • jsulmJ jsulm

                      @HemantSuryawanshi said in Qt Unit test in a project:

                      I am getting error that redefinition of main function due to the QUICK_TEST_MAIN Macro

                      Of course, you have two main() functions now.
                      I suggest you split your C++ and Qt Quick tests.

                      H Offline
                      H Offline
                      HemantSuryawanshi
                      wrote on last edited by
                      #31

                      @jsulm how can I link the qml file to the Qt Quick test project. I tried with same way as I link cpp file earlier, but its not working.

                      1 Reply Last reply
                      0

                      • Login

                      • Login or register to search.
                      • First post
                        Last post
                      0
                      • Categories
                      • Recent
                      • Tags
                      • Popular
                      • Users
                      • Groups
                      • Search
                      • Get Qt Extensions
                      • Unsolved