Scheinüberschriebene Methode mit Mockito PowermokitoJava

Java-Forum
Guest
 Scheinüberschriebene Methode mit Mockito Powermokito

Post by Guest »

Ich möchte die Klassenmethode testB1Method2 meines Dienstes testen, indem ich die überschriebene Methode a1Method2 der Klasse B1 verspotte. Ich möchte in den Klassen A1 und B1 nichts ändern. Ich verwende Mockito 1.9.0 und Powermockito 1.4.12. Den folgenden Code versuche ich:

UnitTestService-Klasse:

Code: Select all

import static org.mockito.Mockito.*;

import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;
import org.powermock.api.mockito.PowerMockito;
import org.testng.Assert;
import org.testng.annotations.Test;

public class UnitTestService {

@Mock
B1 b1;
@InjectMocks
Service service = new Service();

@Test
public void testB1Method2() throws Exception {
MockitoAnnotations.initMocks(this);
when(b1.a1Method2()).thenReturn("mockvalue");
PowerMockito.whenNew(B1.class).withArguments(Mockito.any()).thenReturn(b1);
String output = service.serviceMethod();
System.out.println("=====" + output);
Assert.assertTrue("mockvalue".equalsIgnoreCase(output), "testA1Method2 failed!");
}

}
Dienstklasse:

Code: Select all

public class Service {

public String serviceMethod() {
B1 b1 = new B1("some data");
return b1.a1Method2();
}

}
Klasse A1:

Code: Select all

public abstract class A1 {

public A1(String data) {
//doing many thing with data
}

public String a1Method1() {
return "from a1Method1";
}

public String a1Method2() {
return "from a1Method2";
}

}
B1-Klasse:

Code: Select all

public class B1 extends A1 {

public B1(String data) {
super(data);
}

@Override
public String a1Method1() {
return "a1Method1 from B1 class";
}

}
Ich führe die Klasse UnitTestService mit testNG in Eclipse aus. Und hier wird die tatsächliche Methode in Klasse B1 a1Method2 aufgerufen, während sie „=====from a1Method2“ in der Konsole ausgibt. Das heißt: Hier scheint es, dass Mockito diese Methode nicht verspotten kann.

Welche Codeänderung sollte ich in der UnitTestService-Klasse vornehmen, um Klasse B1 a1Method2 ?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post