C ++ рдХреЗ рд▓рд┐рдП рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг

рдЖрдЬрдХрд▓, рдХрд┐рд╕реА рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреЗ рдмреНрд▓реЙрдХ рдХреЗ рдмреАрдЪ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдмрд╛рддрдЪреАрдд рдХреЛ рдмрд╛рдпрдкрд╛рд╕ рдХрд░рдирд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рдпрд╣ рд╡реЗрдм рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЗрдВрдЬрди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╕реНрдЯреНрд░реАрдо рдЖрджрд┐ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЖрджрд┐ рд╕реВрдЪреАрдмрджреНрдз рд╡рд┐рдЬреНрдЮрд╛рдкрди infinitum рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рдЗрд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╕рдорд╕реНрдпрд╛ рдРрд╕реА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдЖрдпреЛрдЬрди рдХреА рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИ, рдЬреЛ рдЕрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд░реВрдк рд╕реЗ, рдпрд╛ рдмрд▓реНрдХрд┐, рдПрдХ рдРрд╕реЗ рдЙрдкрдХрд░рдг рдХрд╛ рд╕рдВрдЪрд╛рд▓рди рдХрд░рддреА рд╣реИрдВ, рдЬреЛ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдкрд░реАрдХреНрд╖рдг рдмрдирд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рд╢рдмреНрдж рдХрд╛ рдЕрд░реНрде "рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкрд░реАрдХреНрд╖рдг" рд╕реНрдкрд╖реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред "рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдЯреЗрд╕реНрдЯ" рд╕реЗ рдЕрднрд┐рдкреНрд░рд╛рдп рдПрдХ рдРрд╕реА рдкрд░реАрдХреНрд╖рд╛ рд╕реЗ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдХрд┐рд╕реА рднреА рд╕рдордп рдХрд┐рд╕реА рднреА рдХрд╛рд░реНрдп рд╕реЗ, рдХрд┐рд╕реА рднреА рдХрд╛рд░реНрдп рд╕реЗ рд╕реНрд╡рдпрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдПрдХ рдкрд░рд┐рдЪрдп рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВ рдпрд╣ рдиреЛрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкрд░реАрдХреНрд╖рдг рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдХреЗрд╡рд▓ рдПрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╣реБрдЖ рдерд╛, рдФрд░ рд╡рд╣ рдХреЗрд╡рд▓ рд╕рд┐рд▓реНрд╡рд░рд▓рд╛рдЗрдЯ 3 рдФрд░ 4 рдХреЗ рд▓рд┐рдП (рд╕рд┐рд▓реНрд╡рд░рд▓рд╛рдЗрдЯ рдЯреВрд▓рдХрд┐рдЯ рд╕реЗ)ред

[TestClass] public class MyTest_test : SilverlightTest { [TestMethod] [Asynchronous]//    public void test_AsyncExample() { //      Thread cThread = new Thread( delegate() { //-   //   ! <b>EnqueueTestComplete();</b> } ); cThread.Start(); } } 

рдмреЗрд╢рдХ, рдореИрдВрдиреЗ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдЦреЛрдЬ рдирд╣реАрдВ рдХреА, рд▓реЗрдХрд┐рди рдПрдХ рддреНрд╡рд░рд┐рдд рдирд┐рд░реАрдХреНрд╖рдг рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рд╕рд┐рд▓реНрд╡рд░рд▓рд╛рдЗрдЯ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдРрд╕рд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рдерд╛, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рди рддреЛ .рдиреЗрдЯ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд▓рд┐рдП, рди рд╣реА рджреЗрд╢реА рд╕реА ++ рдХреЗ рд▓рд┐рдПред рдФрд░ рддрд╛рд▓реЗ рдХреЗ рд╕рд╛рде рд╕рднреА рддрд░рд╣ рдХреЗ рдореБрд╢реНрдХрд┐рд▓ рдлреИрд╕рд▓реЗ, рдкреГрд╖реНрдарднреВрдорд┐ рдХреЗ рдзрд╛рдЧреЗ рдореЗрдВ рд▓реЙрдиреНрдЪ рдХреА рдЧрд┐рдирддреА рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рдпрд╣ рдХреЗрд╡рд▓ рдкрд░реАрдХреНрд╖рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЬрдЯрд┐рд▓ рдФрд░ рд╡рд┐рд▓рдВрдмрд┐рдд рдХрд░рддрд╛ рд╣реИред

рдФрд░ рдЗрд╕рд▓рд┐рдП рдЬрд┐рд╕ рдЯреВрд▓ рдХреЛ рд╣рдо рдЖрдкрдХреЗ рдзреНрдпрд╛рди рдореЗрдВ рд▓рд╛ рд░рд╣реЗ рд╣реИрдВ, рдЙрд╕реЗ рдХреНрд╡рд┐рдХрдпреВрдирд┐рдЯ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣ рдПрдХ рдЦреБрд▓реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИ рдЬреЛ рдХреНрдпреВрдЯреА 4.7 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреНрдпреВрдЯреА 4.7 рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдПрд▓рдЬреАрдкреАрдПрд▓ 2.1 рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреЗ рддрд╣рдд рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдХреНрдпреВрдЯреА рдкрд░ рдЗрд╕реЗ рдХреНрдпреЛрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреНрдпреЛрдВрдХрд┐ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдЗрд╕рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкрд░реАрдХреНрд╖рдг рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЙрдкрдпреБрдХреНрдд рд╣реИ (рдпрд╣ рдореБрдЭреЗ .net рдореЗрдВ рдкреНрд░рддрд┐рдмрд┐рдВрдм рдХреА рдмрд╣реБрдд рдпрд╛рдж рджрд┐рд▓рд╛рддрд╛ рд╣реИ)ред рднрд╡рд┐рд╖реНрдп рдореЗрдВ, .net рдФрд░ рдореЛрдиреЛ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рдИ рдЧрдИ рд╣реИред

рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рд╣рдо рд╕реНрд╡рдпрдВ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВ, рдЖрдЗрдП рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рдЙрджрд╛рд╣рд░рдг рдкрд░ рдЧреМрд░ рдХрд░реЗрдВ: рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рд╣рдореЗрдВ рдЙрд╕ рдХрдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рдкреГрд╖реНрдарднреВрдорд┐ рдереНрд░реЗрдб рдореЗрдВ рд╕рдВрдЪрд╛рд▓рди рдХрд░рддрд╛ рд╣реИред рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо QWebView :: load (...) рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦреЗрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдХреЗрд╡рд▓ рд╕рд┐рдЧреНрдирд▓ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рд▓реЛрдбрдлрд┐рдирд┐рд╢ (рдмреВрд▓) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рддреБрд▓рдирд╛ рдХреЗ рд▓рд┐рдП, рд╣рдо рдкрд╣рд▓реЗ CPPUNIT рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ "рд╕реБрдкрд░ рд╕рд┐рдВрдХреНрд░реЛрдирд╕" рдЯреЗрд╕реНрдЯ рд▓рд┐рдЦреЗрдВрдЧреЗ, рдФрд░ рдлрд┐рд░ QuickUnitit рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗред рдФрд░ рдкрд░рд┐рдгрд╛рдо рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВред

CPPUNIT рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рд╛рдЧреВ рдХрд┐рдП рдЧрдП рдкрд░реАрдХреНрд╖рдг рд╡рд░реНрдЧ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:


 #ifndef CWEBVIEWTEST_H #define CWEBVIEWTEST_H class CWebViewTest : public QObject, public CPPUNIT_NS::TestFixture { Q_OBJECT public: CWebViewTest( QObject *parent = 0 ); ~CWebViewTest(); CPPUNIT_TEST_SUITE( CWebViewTest ); CPPUNIT_TEST( test_WebView_Load ); CPPUNIT_TEST_SUITE_END(); public: //  virtual void setUp() { m_bPassed = false; m_pView = new QWebView( 0 ); }; //     virtual void tearDown() { delete m_pView; }; private: //  QWebView * m_pView; //    bool m_bPassed; private: //   void test_WebView_Load() { connect( m_pView, SIGNAL( loadFinished( bool ) ), SLOT( slot_load_finished( bool ) ) ); m_pView->load( QUrl("http://www.google.ru") ); /*      ,         loadFinished( bool ) */ //    (    ) while ( !m_bPassed ) { QApplication::processEvents( QEventLoop::ExcludeUserInputEvents ); } } private slots: void slot_load_finished( bool bOk ) { CPPUNIT_ASSERT(bOk); CPPUNIT_ASSERT( m_pView->page()->totalBytes() > 100 ); m_bPassed = true;//   } }; #endif // CWEBVIEWTEST_H 

рдореБрдЦреНрдп рд╕рдорд╕реНрдпрд╛ рдкрд░реАрдХреНрд╖рдг рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрди рдереНрд░реЗрдб рдХреЛ рддрдм рддрдХ рд░рдЦрдирд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рд╕реНрд▓реЙрдЯ рд╕реНрд▓реЙрдЯ рдореЗрдВ рд▓реЛрдбрдлрд┐рдирд┐рд╢ (рдмреВрд▓) рд╕рд┐рдЧреНрдирд▓_рд▓реЛрдб_рдлрд┐рдирд┐рд╢ (рдмреВрд▓ рдмреЙрдХ) рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реА рд╕реНрдЯреНрд░реАрдо рдХреЛ рдЖрдЧреЗ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдзрд╛рд░рд╛ рдирд╣реАрдВ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХреЛ рд╕рд╣реА рдирд╣реАрдВ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рдордп рд╕реЗ рдкрд╣рд▓реЗ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдирд┐рд╖реНрдкрд╛рджрди рдереНрд░реЗрдб рдХреЛ рд░рдЦрдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдХрддрд╛рд░ рдореЗрдВ рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдордЬрдмреВрд░ рдХрд░рдирд╛ рд╣реИ:

 //    (    ) while ( !m_bPassed ) { QApplication::processEvents( QEventLoop::ExcludeUserInputEvents ); } 

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рд╡рд┐рдзрд┐ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рд▓рд┐рдП рд╕рдордп рд▓реЗрдиреЗ рд╡рд╛рд▓реА рд╣реИ, рдмреЗрд╢рдХ рдпрд╣ рдШрд╛рддрдХ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдкрд░реАрдХреНрд╖рдг рдФрд░ рд╡рд┐рдХрд╛рд╕ рдХреЗ рдЪрд░рдг рдореЗрдВ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЬрд┐рд╕ рдХреЛрдб рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ рд╡рд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛ рдХреИрд╕реЗ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИред

рдЕрдм рдЙрд╕реА рд╕рдорд╕реНрдпрд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди QuickUnit рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП:


 #ifndef ASYNCHRONOUS_TEST_EXAMPLE_H #define ASYNCHRONOUS_TEST_EXAMPLE_H #include <QS_QuickUnit.h> #include <QtWebKit\QtWebKit> class AsynchronousTestExample : public QS_TestClass { Q_OBJECT private: QWebView * m_pView; private slots: //  void test_LoadWebPage() { QS_BEGIN_TEST; m_pView = new QWebView( 0 ); connect( m_pView, SIGNAL( loadFinished( bool ) ), SLOT( slot_loadFinished( bool ) ) ); m_pView->load( QUrl( "http://custom.site.com" ) ); QS_END_TEST; }//      ,     ! //  (    , //      test_) void slot_loadFinished ( bool ok ) { QS_BEGIN_TEST; //  QS_IS_TRUE( ok ); QS_IS_TRUE( m_pView->page()->totalBytes() > 100 ); QS_END_TEST; QS_TEST_COMPLETE;//,     } }; #endif //ASYNCHRONOUS_TEST_EXAMPLE_H 

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЙрджрд╛рд╣рд░рдг рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдкрд░реАрдХреНрд╖рдг рд╡рд░реНрдЧ рдХрд╛ рдШреЛрд╖рд┐рдд рднрд╛рдЧ рдиреНрдпреВрдирддрдо рд╣реИред рдЕрд╡рдзрд╛рд░рдг рд╕рдорд╕реНрдпрд╛ рдЧрд╛рдпрдм рд╣реЛ рдЧрдИ рд╣реИ, рдХреЛрдб рдЕрдзрд┐рдХ рдХреЙрдореНрдкреИрдХреНрдЯ рдФрд░ рд╕рдордЭ рдореЗрдВ рдЖ рдЧрдпрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ рд╣рдореЗрд╢рд╛ рд╣реЛрддрд╛ рд╣реИ, рдЖрдкрдХреЛ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рднреБрдЧрддрд╛рди рдХрд░рдирд╛ рд╣реЛрдЧрд╛:
  1. рдпрджрд┐ рдбреЗрд╡рд▓рдкрд░ рдпрд╣ рдЗрдВрдЧрд┐рдд рдХрд░рдирд╛ рднреВрд▓ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдкрд░реАрдХреНрд╖рдг рдкреВрд░рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рддреЛ рд╕рд┐рд╕реНрдЯрдо рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдЧрд╛ (рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдордп рд╕реАрдорд╛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рд╣реИ, рддрд╛рдХрд┐ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдзреАрдорд╛ рди рд╣реЛ);
  2. рдпрд╣ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреНрдпреВрдЯреА рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд QuickUnit рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рдХреНрдпреВрдЯреА рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рдпрджрд┐ рдЖрдк Visual Studio рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рд▓рд┐рдП рдРрдб-рдСрдиред

рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ:

рдЕрдЧрд░ рд╣рдо рдХреНрд╡рд┐рдХ рдпреВрдирд┐рдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рд╣рдореЗрдВ рдХреНрдпрд╛ рдорд┐рд▓реЗрдЧрд╛:
  1. рдкрд░реАрдХреНрд╖рдг рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдкреНрд░рд╡рд╛рд╣ рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣реЗрд▓реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ;
  2. рдкрд░реАрдХреНрд╖рдг рд╡рд░реНрдЧ рдХрд╛ рдиреНрдпреВрдирддрдо рдШреЛрд╖рд┐рдд рд╣рд┐рд╕реНрд╕рд╛;
  3. рдмрд┐рд▓реНрдбрд┐рдВрдЧ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рд▓рдЪреАрд▓рд╛рдкрди, рдЬрдЯрд┐рд▓ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП, рдХреЛрдб рдХреЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдереНрд░реЗрдб рдмреНрд▓реЙрдХ рд╣реИрдВ;
  4. рдЫреЛрдЯреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЖрдХрд╛рд░
  5. рдХреНрд░реЙрд╕ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдоред

рдиреБрдХрд╕рд╛рди:
  1. рдХреНрдпреВрдЯреА рдХреЗ рд▓рд┐рдП рд╕реНрдиреИрдк;
  2. рд╕рд╛рд╡рдзрд╛рдиреАрдкреВрд░реНрд╡рдХ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦреЗрдВ, рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдордд рднреВрд▓рдирд╛ред

QuickUnit рдХреА рдмреБрдирд┐рдпрд╛рджреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдФрд░ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдкрд░ рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдирдЬрд╝рд░ред

рдЯреЗрд╕реНрдЯ рдХреНрд▓рд╛рд╕ рдореЗрдВ рд╣реА QS_TestClass рдХрд╛ рд╡рдВрд╢рдЬ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдХреНрдпреВрдЯреА рдХреНрд▓рд╛рд╕ (Q_OBJECT рдореИрдХреНрд░реЛ рдШреЛрд╖рд┐рдд рд╣реИ)ред рдмрд╛рд╣рд░реА рд▓реЛрдЧреЛрдВ рд╕реЗ рдкрд░реАрдХреНрд╖рдг рд╕реНрд▓реЙрдЯ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреВрд░реНрд╡ рдореЗрдВ рдЙрдкрд╕рд░реНрдЧ test_ рд╣реИред рд╕рднреА рдкрд░реАрдХреНрд╖рдг рд╕реНрд▓реЙрдЯ рдореБрдЦреНрдп рдзрд╛рдЧреЗ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЬреЛ рдЖрдкрдХреЛ рдПрдХ рд╢рдмреНрдж рдореЗрдВ GUI рдХрдХреНрд╖рд╛рдПрдВ, COM рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЙрди рд╕рднреА рд╡рд░реНрдЧреЛрдВ рдХреЛ рдЬреЛ рдХреЗрд╡рд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдореБрдЦреНрдп рдзрд╛рдЧреЗ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЯреЗрд╕реНрдЯ рд╕реНрд▓реЙрдЯ рдХреЛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдФрд░ рдЧреИрд░-рдорд╣рддреНрд╡рдкреВрд░реНрдг рджреЛ рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдХреНрд░рд┐рдЯрд┐рдХрд▓ рдЯреЗрд╕реНрдЯ рд╕реНрд▓реЙрдЯ - рдкреВрд░реЗ рдЯреЗрд╕реНрдЯ рдХреНрд▓рд╛рд╕ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдЕрдЧрд░ рдпрд╣ рдЯреЗрд╕реНрдЯ рдореЗрдВ рдЙрддреНрддреАрд░реНрдг рдирд╣реАрдВ рд╣реБрдЖ, рддреЛ рдЖрдЧреЗ рдХреЗ рдЯреЗрд╕реНрдЯ рд╕реНрд▓реЙрдЯ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдирд┐рдпрдВрддреНрд░рдг рдХреЛ рдЕрдЧрд▓реЗ рдЯреЗрд╕реНрдЯ рдХреНрд▓рд╛рд╕ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдкрд░реАрдХреНрд╖рдг рдкреВрд░рд╛ рдХрд░ рд▓рд┐рдпрд╛ рд╣реИ рдХрд┐ рдкреНрд░рдгрд╛рд▓реА рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдХреНрд░реЛ QS_TEST_COMPLETE, рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдХрд┐рд╕реА рднреА рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЯреЗрд╕реНрдЯ рд╕реНрд▓реЙрдЯ рдореЗрдВ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реЛрддрд╛ рд╣реИред рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдХрд╛рд░реНрдп рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдпрд╣ рдмрддрд╛рдирд╛ рд╣реИ рдХрд┐ рд╕реНрд▓реЙрдЯ рдХреЛ рдХреБрдЫ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЪрд▓рд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдШреЛрд╖рдгрд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкрд░реАрдХреНрд╖рдг рд╕реНрд▓реЙрдЯ рдХреЗ рдирд╛рдо рдореЗрдВ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

 #ifndef ATTRIBUTE_USAGE_EXAMPLE_H #define ATTRIBUTE_USAGE_EXAMPLE_H #include <QS_QuickUnit.h> class AttributeUsageExample : public QS_TestClass { Q_OBJECT private slots: void test_myTest_Fatal() { QS_BEGIN_TEST; //   QS_END_TEST; QS_TEST_COMPLETE; } void test_myTest_Repeat_15() { QS_BEGIN_TEST; //   QS_END_TEST; QS_TEST_COMPLETE; } void test_myTest_Fatal_Repeat_15() { QS_BEGIN_TEST; //   QS_END_TEST; QS_TEST_COMPLETE; } }; #endif //ATTRIBUTE_USAGE_EXAMPLE_H 

рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рдЕрдм рддрдХ рдХреЗрд╡рд▓ рджреЛ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ _Fatal рдФрд░ _Repeat_N рд▓рд╛рдЧреВ рдХреА рдЧрдИ рд╣реИрдВред рдкрд╣рд▓рд╛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╕реНрд▓реЙрдЯ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдФрд░ рджреВрд╕рд░рд╛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╕реНрд▓реЙрдЯ рдХреЛ рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рдПрди рдмрд╛рд░ рдлрд┐рд░ рд╕реЗ рдХрд╣рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдкрд░реАрдХреНрд╖рдг рд╕реНрд▓реЙрдЯ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ рдФрд░ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рдЪрд▓рддрд╛ рд╣реИред рдореИрдХреНрд░реЛрдЬрд╝ QS_BEGIN_TEST рдФрд░ QS_END_TEST рдПрдХ рдкреНрд░рдпрд╛рд╕ рдХреИрдЪ рдмреНрд▓реЙрдХ рд╣реИред рдЕрдкрд╡рд╛рдж рдХреЛ рдкрдХрдбрд╝рдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкрд░реАрдХреНрд╖рдг рд╕реНрд▓реЙрдЯ рдмрд╛рдзрд┐рдд рд╣реЛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдЗрд╕реЗ рд╡реИрдз рдирд╣реАрдВ рдХреЗ рд░реВрдк рдореЗрдВ рддрдп рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдкрд░реАрдХреНрд╖рдг рдореИрдХреНрд░реЛрдЬрд╝ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рднреА рд╣реИ, рдЖрдк рдЙрдиреНрд╣реЗрдВ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рдЧрд╛рдЗрдб рдореЗрдВ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдкрд░реАрдХреНрд╖рдг рд╡рд░реНрдЧ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ рдХреЗрд╡рд▓ рдЗрд╕реЗ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд╣рддрд╛ рд╣реИред рдкрдВрдЬреАрдХрд░рдг рдХреЛ main.cpp рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА рдЧрдИ рд╣реИ

рдХреНрд╡рд┐рдХ рдпреВрдирд┐рдЯ рди рдХреЗрд╡рд▓ рдХреНрдпреВрдЯреА рдХреЗ рддрд╣рдд рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИ, рдмрд▓реНрдХрд┐ рдкреВрд░реА рддрд░рд╣ рд╕реЗ Win32, ATL, MFC рдХреЗ рд╕рд╛рде рднреА рд╕рдВрдЧрдд рд╣реИред рдкрд░реАрдХреНрд╖рдг рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдХрдВрд╕реЛрд▓ рдЙрддреНрддреАрд░реНрдг рдХрд┐рдП рдЧрдП рдкрд░реАрдХреНрд╖рдгреЛрдВ рдкрд░ рдПрдХ рд░рд┐рдкреЛрд░реНрдЯ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ, рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдХрд╛рд░рдгреЛрдВ рдФрд░ рдмрд┐рдВрджреБрдУрдВ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ, рд░рд┐рдкреЛрд░реНрдЯ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рд╕реНрд▓реЙрдЯ, рдХрдХреНрд╖рд╛ рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рднреА рд╢рд╛рдорд┐рд▓ рд╣реИред

рд╣рдореЗрдВ рдкреВрд░реА рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ QuickUnit рдЖрдкрдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛ред рд╕рднреА рд╕реБрдЭрд╛рд╡реЛрдВ рдФрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рдпрд╣рд╛рдВ рдЫреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред

Source: https://habr.com/ru/post/In128543/


All Articles