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
Verwenden Sie die folgenden Bibliotheken und Versionen
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"));
}
}
PowerMockito verwenden @ RunWith (PowerMockRunner.class) in der Klassenanmerkung Fügen Sie der Methodenanmerkung "@PrepareForTest (FacesContext.class)" hinzu
@PrepareForTest (FacesContext.class)
kann eine Klassenanmerkung sein.FacesContext.getCurrentInstance ()
ist eine statische Methode, also verspotten Sie sie mit PowerMockito.mockStatic
Alle nachfolgenden aufgerufenen Instanzen werden mit "mock" verspottet
mock
verspotten möchten, können Sie mit Mockito.mock
verspotten.Danach wird Mock aufgerufen und die Verarbeitung wird ausgeführt, wenn der Test ausgeführt wird
Recommended Posts