Bonjour,
CppUnit lance-t-il des threads en internes et de quel type sur
windows ?
Sinon éclairez moi Merci.
Bonjour,
CppUnit lance-t-il des threads en internes et de quel type sur
windows ?
Sinon éclairez moi Merci.
Cela me suprendrait.
Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...
bonjour,
donc tu crois que tout est séquentiel?
Je pense que la méthode de base est séquentiel, comme avec Junit. Mais qu'il est possible de lancer de manière asynchrone des tests sur les classes (en effet, les lancements de tests sont protégés par des mutex (SynchronizedObject dans cppUnit))Envoyé par zaphibel
Pourquoi te demandez tu cela ?
On ajoute un teste :
On lance la batterie de test :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 void TestRunner::addTest( Test *test ) { m_suite->addTest( test ); }
Le controlleur ne faisait qu'exécuter runTest du Test:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 void TestRunner::run( TestResult &controller, const std::string &testPath ) { TestPath path = m_suite->resolveTestPath( testPath ); Test *testToRun = path.getChildTest(); controller.runTest( testToRun ); }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 void TestResult::runTest( Test *test ) { startTestRun( test ); test->run( this ); endTestRun( test ); }Enfin, le TestResult fait :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 void TestCase::run( TestResult *result ) { result->startTest(this); ... result->protect( TestCaseMethodFunctor( this, &TestCase::runTest ), this );
A ce moment, on voit apparaître un mutex qui laisse présager la possibilité de lancer des tests dans plusieurs threads.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 void TestResult::startTest( Test *test ) { ExclusiveZone zone( m_syncObject ); for ( TestListeners::iterator it = m_listeners.begin(); it != m_listeners.end(); ++it ) (*it)->startTest( test ); }
Après, j'avoue m'être à moitié paumé dans le code et j'ai eu la flemme de réflechir d'avantage![]()
Bonsoir,
Tout d'abord Merci pour l'attention que tu as apporté à ma question.
Ce code me permet d'éclaircir un gros problème lié à mes tests.
Car j'utilise ACE (adaptive communication enviroment) et j'utillise
des Mutex. Il se trouve que seul mon application qui utilse les
mutex tourne parfaitement. Mais en l'integrant à des tests avec
cppUnit il se trouve que mes Tasks (pour être précis employés
par ACE) ne se lancent plus car ils n'ont jamais la main.
Ce qu iaboutit à un crash sur un Mutex d'ACE de temps en temps.
Il semblerait qu'il y ait un conflit de Mutex; L'emploi de plusieurs
frameworks pourrait ne pas être compatible à ce que je vois.
Naturellement ce n'est qu'une théorie pour l'instant qui demande
à être vérifiée.
Merci Arigato ^^
Cela me parraitrait complètement idiot comme approche. Quid des nombreux codes non réentrants, ou des machines mono-proc. Il n'y a pas d'option pour empêcher cela ?
Sinon, tu peux toujours te diriger vers des frameworks de TU plus complets, plus simples, et mieux foutus (cxxtest p.ex.)
Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...
Partager