j'avais raillé HazelcastInstance et son IMap. J'ai dû tester plusieurs méthodes (ajouter, supprimer) qui font que cet objet IMap est verrouillé, mis à jour, déverrouillé dans l'ordre. Mais l'objet Mocked IMap affiche zéro invocation lorsque j'essaie d'exécuter le test. classe de test est la suivante:IMap, maquette d'exemple Hazelcast dans JUnit
@RunWith(PowerMockRunner.class)
public class Test {
@Mock
private HazelcastInstance hazelcastInstance;
@Mock
private IMap<Object, Object> imap; // but in actual class instead of Object (K, V) we are having Class Names. private IMap<ClassA,ClassB> imap;
private TestClass testClass;
@Mock
private ClassA a;
@Mock
private ClassB b;
@Test
public void testAdd() {
when(hazelcastInstance.getMap(anyString())).thenReturn(imap);
testClass.add(a, b);
verify(imap, times(1)).lock(any()); //supposed to be invoked (1 time). But it is showing as zero interaction
verify(imap, times(1)).unlock(any());
}
}
classe à tester est la suivante.
public class TestClass {
private IMap<ClassA, ClassB> imap= Hazelcast.newHazelcastInstance().getMap("constant);
public void add(final ClassA key, final ClassB value) {
if (key == null) {
return;
}
try {
imap.lock(key);
imap.put(key, value, 3L, TimeUnit.SECONDS);
} finally {
imap.unlock(key);
}
}
}