PowerMockito Moqueur whenNew pas de prise d'effet
Description:
Je n'arrive pas à avoir mes talons ou se moque de prendre effet dans la classe, j'ai testé. Je suis en train d'utiliser le whenNew action afin que je puisse se moquer d'un retour de l'objet, puis de simuler une opération sur un objet avec une valeur de retour.
J'imagine que ses quelque chose de simple, je suis absent, mais de ne pas le voir.
SOLUTION: a l'Origine, j'ai été en cours d'exécution avec MockitoRunner.class
et d'être modifiés à PowerMockRunner.class
. Le Code ci-dessous reflète la solution.
Pots sur le chemin de classe:
- powermock-mockito-1.4.11-full.jar
- mockoito-all-1.9.0.jar
- javassist-3.15.0-GA.jar
- junit-4.8.2.le fac a
- objensis-1.2.jar
- cglib-nodep-2.2.2.jar
DE LA CLASSE DE TEST
import org.junit.Test;
import org.junit.runner.RunWith;
import org.powermock.api.mockito.PowerMockito;
import static org.powermock.api.mockito.PowerMockito.*;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
import static org.mockito.Matchers.any;
@RunWith(PowerMockRunner.class)
@PrepareForTest(ClassA.class)
public class ClassATest {
@Test
public void test() throws Exception
{
String[] returnSomeValue = {"PowerMockTest"};
String[] inputValue = {"Test1"};
ClassB mockedClassB = mock(ClassB.class);
whenNew( ClassB.class).withNoArguments().thenReturn( mockedClassB );
when( mockedClassB, "getResult", any(String[].class) ).thenReturn(returnSomeValue);
IClassA classUnderTest = new ClassA();
String[] expectedValue = classUnderTest.runTest(inputValue);
}
}
Classe Une Mise En Œuvre
public class ClassA implements IClassA {
@Override
public String[] runTest(String[] inputValues) {
String[] result;
IClassB classB = new ClassB();
result = classB.getResult(inputValues);
return result;
}
}
mis à jour.
OriginalL'auteur haju | 2012-08-14
Vous devez vous connecter pour publier un commentaire.
Puisque vous utilisez powermock caractéristiques (
@PrepareForTest
,PowerMockito.whenNew
etc.), vous devez exécuter le test avec le PowerMockRunner.Parce que ClassB#geResult n'est pas privé, vous pouvez également simplifier votre code et de le remplacer
par
Je ne comprends pas, il fonctionne dans mon environnement.Essayez avec cette aussi : "quand(mockedClassB.getResult(tout(String[].classe))).thenReturn(someValue);"
Je complète ma réponse. Veuillez remplir votre question en fournissant des détails sur votre environnement : junit, powermock, powermockito et mockito versions. Offre également la valeur de someValue dans ClassATest#mockingTest.
J'ai supprimé tous tout et commencé frais et résolu le problème que j'avais. Description mise à jour pour montrer racine du problème, la résolution et de configuration supplémentaires.
OriginalL'auteur gontard