[JAVA] Verwenden Sie FacesContext als Mock mit PowerMockito

Einführung

Dieser Beitrag ist zum Verspotten von FacesContext auf junit Weil ich keine Unterklassen wie FacesContextMock erstellen möchte Beschreiben Sie als Memorandum, wie Sie PowerMock verwenden, und führen Sie dies in der Methode "@ Test" aus

Annahme

Verwenden Sie die folgenden Bibliotheken und Versionen

  1. java8
  2. junit4.12
  3. PowerMockito (mit 1.7.3)

Stichprobe

UserAuth Benutzerinformationen werden in einer Sitzung verwaltet

UserAuth.java


import java.io.Serializable;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;

/**
 *Benutzeranmeldeinformationen
 */
@ManagedBean
@SessionScoped
public class UserAuth implements Serializable {

	/**Benutzeridentifikation*/
	private String userId;
	/**Anmeldestatus*/
	private boolean logined;

	/**
	 *Abmeldevorgang
	 *
	 * @URL des Anmeldebildschirms zurückgeben
	 */
	public String logout() {
		//Sitzungsinformationen verwerfen
		FacesContext.getCurrentInstance().getExternalContext().invalidateSession();

		//Durch Weiterleiten zum Anmeldebildschirm
		return "/login.xhtml?faces-redirect=true";
	}

	// ... Setter and Getter

}

** UserAuth-Test ** Testen Sie den Abmeldevorgang

UserAuth.java


import static org.hamcrest.CoreMatchers.containsString;
import static org.junit.Assert.assertThat;

import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;

import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;

/**
 *UserAuth-Testklasse
 */
@RunWith(PowerMockRunner.class)
public class UserAuthTest {

	/**Benutzeranmeldeinformationen*/
	private UserAuth userAuth;

	/**
	 *Klasse für Benutzeranmeldeinformationen instanziieren
	 */
	@Before
	public void bofore() {
		userAuth = new UserAuth();
	}

	/**
	 *Test-Abmeldevorgang<br>
	 *Die URL des Abmeldeziels ist der Anmeldebildschirm.
	 */
	@Test
	@PrepareForTest(FacesContext.class)
	public void testLogout() {
		//spotten
		PowerMockito.mockStatic(FacesContext.class);
		FacesContext context = PowerMockito.mock(FacesContext.class);
		ExternalContext ext = PowerMockito.mock(ExternalContext.class);
		//Methodeneinstellung
		PowerMockito.when(FacesContext.getCurrentInstance()).thenReturn(context);
		PowerMockito.when(context.getExternalContext()).thenReturn(ext);

		//Überprüfen Sie die URL des Abmeldeziels.
		assertThat(userAuth.logout(), containsString("login.xhtml"));
	}
}

Kommentar

PowerMockito verwenden @ RunWith (PowerMockRunner.class) in der Klassenanmerkung Fügen Sie der Methodenanmerkung "@PrepareForTest (FacesContext.class)" hinzu

FacesContext.getCurrentInstance () ist eine statische Methode, also verspotten Sie sie mit PowerMockito.mockStatic Alle nachfolgenden aufgerufenen Instanzen werden mit "mock" verspottet

Danach wird Mock aufgerufen und die Verarbeitung wird ausgeführt, wenn der Test ausgeführt wird

Recommended Posts

Verwenden Sie FacesContext als Mock mit PowerMockito
Verwenden Sie das benannte Format mit Rubys Formatmethode
Zugriff mit Selen als Gegenmaßnahme für navigator.webdriver
Mock and Stub mit Minitest (RR, WebMock, MiniTest :: Mock verwenden)
Machen Sie System.out Mock mit dem Spock Test Framework
Berücksichtigung des in SpringToolSuite (STS) verwendeten Eigenschaftseditors
Verwenden Sie java1.7 (zulu7) in einem bestimmten Verzeichnis mit jenv
Verwenden Sie ProGuard mit Gradle
Verwenden Sie Puphpeteer mit Docker
Verwenden Sie XVim2 mit Xcode 12.0.1
Mock Enum mit PowerMock
Verwenden von CentOS mit LXD
Verwenden Sie Webmock mit Rspec
GitHub als Speicher
Verwenden Sie WebJars mit Gradle
Verwenden Sie jlink mit gradle
So fordern Sie mit jMeter eine CSV-Datei als JSON an
So registrieren Sie sich mit Tomcat als Kunde in Square