PowerMock classe pas trouvé
Pour une raison que je ne pas suivre un assez simple PowerMock exemple.
J'ai inclus powermock-mockito-1.5.1-full
dans mon classpath, et j'essaie de tester une méthode public final (à la suite de cette exemple).
Pour une raison que je ne suis pas en mesure de faire de l'importation de la PowerMock
classe.
import org.junit.*;
import org.junit.runner.RunWith;
import org.mockito.Mockito;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
import com.cleancode.lifesaver.camera.*;
@RunWith(PowerMockRunner.class)
@PrepareForTest(android.hardware.Camera.class)
public class CameraTests {
private android.hardware.Camera _cameraMock;
@Before
public void setUp() {
_cameraMock = PowerMockito.mock(android.hardware.Camera.class);
}
@Test
public void releaseCamera() {
ICamera camera = new Camera(_cameraMock);
//Compile error: PowerMock can't be resolved
PowerMock.replay(_cameraMock);
//I also tried PowerMockito.replay(_cameraMock) but that also doesn't exist.
camera.release();
Mockito.verify(_cameraMock).release();
}
}
Que le commentaire explique que la PowerMock
classe ne peut pas être importé à partir de la puissance se moquer de pot.
Il se sent comme une question stupide, mais je ne peux vraiment pas trouver quelque chose sur internet.
Où dois-je être en mesure de trouver la classe statique PowerMock
? J'ai aussi utilisé Java Décompiler à la recherche de la powermock de bibliothèque, pas de coups sur powermock /replay.
oui, seulement
PowerMock
classe ne peut pas être trouvé. PowerMockRunner
et PowerMockito
peut être trouvé et aussi compiler et exécuter.OriginalL'auteur bas | 2013-09-20
Vous devez vous connecter pour publier un commentaire.
L'exemple que vous suivez
PowerMock.replay(_cameraMock);
est à l'aide de EasyMock, alors que vous semblez vouloir Mockito. Jetez un oeil à ce tutoriel pour mockito & pouvoir se moquer dePas besoin de facepalm, nous faisons tous des erreurs stupides. Cheers, je suis content d'avoir pu aider
OriginalL'auteur Morfic
Je vous suggère de ne pas créer votre fantaisie dans votre
setUp()
(Avant) de la méthode, parce qu'une maquette est très compliqué, par exemple, vous pouvez dire exactement combien de temps elle devrait s'attendre à une méthode est appelée, si vous déclarez une "générale" fantaisie pour tous vos tests, il est très difficile de contrôler ce comportement.peut-être (sans le code, je ne peux que deviner que vous voulez que votre
android.hardware.Camera
est appelée à l'intérieur de votreCamera.release()
méthode, ai-je le droit? donc je doit faire comme ceci:La méthode que vous essayez de se moquer n'est pas statique, il est normal de finale de la méthode. Vous pouvez essayer de faire ceci:
si à l'intérieur de
camera.relase()
n'est pas appelé une seule fois leandroid.hardware.Camera.release()
méthode, le test échoue.pas de prob 😉 mais je suis toujours sur mon conseil de ne pas utiliser tearup sauf que si extrêmement nécessaire.. de travail à l'intérieur de chaque test, font de vous séparer de tout le code, sans problèmes de l'interaction. Par ailleurs, seulement une idée.
Pourriez vous s'il vous plaît mettre l'accent sur votre suggestion pour ne pas créer de la fantaisie dans l'installation? Je serais très intéressé de comprendre votre raisonnement, car à mon avis il est plus facile et plus agréable. Vous obtenez pour réinitialiser la maquette avant chaque course (assurez-vous d'un terme n'a pas d'influence sur l'autre), et d'initialiser le comportement commun. Ensuite, vous pouvez spécifier la coutume comportement de la méthode d'essai à l'intérieur de son corps
J'aime beaucoup de séparer le plus que je peux chaque test, alors il ne peut pas y avoir de problème à les oublier pour réinitialiser la simulation. C'est seulement une opinion, mais j'aime mieux avoir tous les comportements sous contrôle dans le test.
Eh bien, c'était la belle partie, j'étais en train de parler. Recréer de la fantaisie dans l'installation, veille automatiquement à ce que vous n'oubliez pas de réinitialiser 🙂
OriginalL'auteur Gianmarco