[JAVA] Essayez d'utiliser la WhiteBox de PowerMock

table des matières

  1. Procédure de création d'un environnement pour l'utilisation de PowerMock
  2. Mock and Spy in PowerMock
  3. Méthodes statiques simulées avec PowerMock
  4. Simulez le constructeur avec PowerMock
  5. Méthodes privées simulées avec PowerMock
  6. Essayez d'utiliser la WhiteBox de PowerMock ← Maintenant ici
  7. Désactiver l'initialiseur statique dans PowerMock

Aperçu

En Java, vous pouvez utiliser une fonctionnalité appelée réflexion pour manipuler la visibilité afin d'obtenir des valeurs pour les champs privés et accéder aux méthodes privées.

PowerMock fournit ces fonctionnalités dans la classe WhiteBox. (La réflexion est utilisée en interne.)

Classe cible

SampleEm.java


public class SampleEm {

	private String field = null;

	public SampleEm(String filed) {
		this.setField(filed);
	}

	public String getField() {
		return field;
	}

	private void setField(String filed) {
		this.field = filed;
	}
}

Exemple d'utilisation

Obtenez la valeur d'un champ privé

getInternalState (instance, chaîne de nom de champ)

@Test
public void test_getInternalState() throws Exception {
	//Préparation
	SampleEm em = new SampleEm("value");
	//Obtenez la valeur d'un champ privé
	String field = Whitebox.getInternalState(em, "field");
}

Définissez une valeur dans le champ privé

setInternalState (instance, chaîne de nom de champ, valeur définie)

@Test
public void test_setInternalState() throws Exception {
	//Préparation
	SampleEm em = new SampleEm("value");
	//Définissez une valeur dans le champ privé
	Whitebox.setInternalState(em, "field", "newValue");
}

Appeler une méthode privée

ʻInvokeMethod (instance, chaîne de nom de méthode, argument, ...) `

@Test
public void test_invokeMethod() throws Exception {
	//Préparation
	SampleEm em = new SampleEm("value");
	//Appeler une méthode privée
	Whitebox.invokeMethod(em, "setField", "newValue");
}

Diverses autres méthodes sont proposées.

Vous pouvez utiliser votre propre code pour accéder aux champs / méthodes privés en utilisant la réflexion, mais je pense que l'avantage d'utiliser Whitebox est que vous pouvez garder votre code de test simple.

Recommended Posts

Essayez d'utiliser la WhiteBox de PowerMock
Essayez d'utiliser libGDX
Essayez d'utiliser Maven
Essayez d'utiliser powermock-mockito2-2.0.2
Essayez d'utiliser GraalVM
Essayez d'utiliser jmockit 1.48
Essayez d'utiliser SwiftLint
Essayez d'utiliser Log4j 2.0
Essayez d'utiliser le Framework Axon
Essayez d'utiliser l'API REST de JobScheduler
Essayez d'utiliser la méthode java.lang.Math
Essayez d'utiliser Talend Part 2
Essayez d'utiliser Talend Part 1
Essayez d'utiliser la liste F #
Essayez d'utiliser la méthode each_with_index
Essayez d'utiliser Spring JDBC
Essayez d'utiliser RocksDB avec Java
Essayez d'utiliser GloVe avec Deeplearning4j
Essayez de gratter en utilisant Java [Note]
Essayez d'utiliser Cocoa de Ruby
Essayez d'utiliser IntelliJ IDEA car vous ne devez le faire qu'une seule fois
Essayez d'utiliser Spring Boot Security
[Rails] Essayez d'utiliser le middleware de Faraday
[Traitement] Essayez d'utiliser GT Force.
[Programmation complète] §2 Essayez d'utiliser Ruby
Essayez Redmine sur le docker Mac
Essayez d'utiliser Redis avec Java (jar)
[Java] Essayez de mettre en œuvre à l'aide de génériques
Essayez d'utiliser le système de messagerie Pulsar
Essayez d'utiliser le traçage de méthode IBM Java
Essayez d'utiliser le SDK Java d'Hyperledger Iroha
[Java] Où avez-vous essayé d'utiliser java
Essayez d'utiliser le framework Java Nablarch [Application Web]
Essayez d'utiliser || au lieu de l'opérateur ternaire
Essayez d'utiliser l'API Stream en Java
Étude de Java Essayez d'utiliser un scanner ou une carte
Essayez d'utiliser l'API au format JSON en Java
Essayez d'utiliser Spring Boot avec VS Code
Essayez d'utiliser MT Loader de Reladomo (chargeur de matrices multi-threads)
Essayez d'utiliser l'API REST de JobScheduler - implémentation Java RestClient--
Essayez d'utiliser l'API Emotion d'Android
Essayez d'utiliser la télécommande Wii en Java
Essayez d'utiliser simple_form / modifier même les modèles enfants
Essayez d'implémenter un serveur GraphQL en utilisant grahpql-java-tools (+ kotlin)