Blog de David MASCLET

Aller au contenu | Aller au menu | Aller à la recherche

dimanche 28 novembre 2010

EasyMock en environnement multithread

Lorsque vous voulez 'mocker' un objet et que ce dernier sera appelé par plusieurs threads, vous aurez le message suivant "Un-thread-safe mock called from multiple threads".

Par exemple :

@test
public void MyTest(){
    List mockList = EasyMock.createMock(List.class);
    EasyMock.expect(mockList.add(EasyMock.anyObject())).times(NUMBER_OF_THREAD);
    EasyMock.replay(mockList);
                
    MyThread[] rateThread= new MyThread[NUMBER_OF_THREAD];
    for(int i=0;i<NUMBER_OF_THREAD;i++){
        rateThread[i]= new MyThread(){
           @Override     
               doit(){
                   mockList.add("foo");
               }
       };
     rateThread[i].start();
            
    }
}

Il vous faut alors ajouter EasyMock.makeThreadSafe(mockList, true);. avant le replay(mockList)

mardi 26 janvier 2010

Tester le javascript : JSUnit, JSmock, Jstester (partie 2)

Après le billet consacré à JsUnit et celui qui expliquait comment mocker une requête Ajax, nous allons maintenant voir comment mocker en javascript. Pour cela je vous propose une courte présentation de JsMock. Les exemples de code sont en annexe de ce billet.

Lire la suite...

vendredi 8 janvier 2010

Tester le javascript : JSUnit, JSmock, Jstester (partie 1)

Beaucoup de développeurs Java sont familiers avec Junit, EasyMock,... ces librairies qui permettent de tester du code Java afin de rendre les programmes plus robustes. Javascript dispose également de frameworks équivalents. Avec l'apparition du Web 2.0, le Javascript et l'Ajax sont de plus en plus présents dans nos applications (j'avais d'ailleurs poster un billet sur comment mocker une requête Ajax,il y a quelques mois) et représente une part non négligeable de code.

Si vous utilisez GWT, qui permet d'écrire à partir de code écrit en Java, de générer une application en HTML / javascript, vous n'avez pas de problème pour tester votre code, puisque Junit suffit. En revanche, si vous avez du code javascript à tester, il existe des librairies qui permettent de simplifier les tests. Je vous propose de voir comment tester du Javascript au moyen de ces 3 frameworks :

  • JsUnit : Qui fournit des mécanismes d'assertions et d'exécutions de tests.
  • JsMock : Permet de simuler des comportements pour des objets Javascript,tout comme EasyMock le fait
  • JsTester : Permet d'executer du code Javascript en java grâce à Rhino.

les exemples de code sont disponibles en annexe de ce billet

Lire la suite...

vendredi 18 décembre 2009

Différence entre Bohr bug, Schrödinbug, Heisenbug, Mandelbug

Pendant plusieurs années, j'ai travaillé dans une équipe QA (Quality Assurance), où mon rôle était de trouver les causes et de corriger les bugs que d'autres équipes avaient faits: il y avait les développeurs qui implémentaient les fonctionnalités, les testeurs / bêta-testeurs, et mon équipe qui prenait en charge les bugs un peu retords. J'avoue avoir eu des fois beaucoup de mal à reproduire certains bugs.

J'ai appris par expérience que certains bugs pouvaient apparaitre seulement dans des cas de tests et ne se seraient jamais reproduits dans une utilisation normale, d'autres n'apparaissent plus lorsqu'on tente de les observer. C'est là, la différence entre les Bohr bugs, Schrödinbugs, Heisenbugs, et Mandelbugs. Toutes ses catégories de bugs tirent leurs noms de physiciens. Voici les différences fondamentales :

Lire la suite...