Ich hatte HazelcastInstance und seine IMap verspottet. Ich musste mehrere Methoden testen (addieren, entfernen), die dieses IMap-Objekt in der Reihenfolge gesperrt, aktualisiert, entsperrt haben. Das gespiegelte IMap-Objekt zeigt jedoch keinen Aufruf, wenn ich versuche, den Test auszuführen. Test-Klasse ist wie folgt:IMap, Haselcastinstanz Mock in 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());
}
}
Klasse getestet werden soll, wie folgt.
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);
}
}
}