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)

La discussion continue ailleurs

URL de rétrolien : https://davidmasclet.gisgraphy.com/index.php?trackback/8

Fil des commentaires de ce billet