2016-04-24 20 views
7

Sto provando a scrivere un test di sicurezza di primavera come descritto qui http://docs.spring.io/spring-security/site/docs/4.0.x/reference/htmlsingle/#test-mockmvc-setup. Devo importare SecurityMockMvcConfigurers come importazione statica, ma il mio IDE non trova la classe.Impossibile trovare SecurityMockMvcConfigurers

mio pom.xml appare come segue:

<parent> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-parent</artifactId> 
    <version>1.4.0.M2</version> 
    <relativePath/> <!-- lookup parent from repository --> 
</parent> 

<properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    <java.version>1.8</java.version> 
</properties> 

<dependencies> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-web</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-security</artifactId> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-test</artifactId> 
     <scope>test</scope> 
    </dependency> 
</dependencies> 

Primavera Boot 1.4.0.M2 Le importazioni della Primavera di sicurezza 4.0.4.RELEASE. Non riesco a trovare la classe in questa versione. Di quale dipendenza aggiuntiva ho bisogno? O che altro non ho considerato?

risposta

24

La dipendenza mancante era:

<dependency> 
    <groupId>org.springframework.security</groupId> 
    <artifactId>spring-security-test</artifactId> 
    <version>4.0.4.RELEASE</version> 
</dependency> 
+9

Per i copy-pasters: ricordati di aggiungere il test dell'oscilloscopio. – beat

+0

Impossibile scoprire dove aggiungere questo codice. Ho provato in root-context e servlet-context, entrambi hanno dato errori 'Riga 31 nel documento XML da URL [file: src/main/webapp/WEB-INF/spring/appServlet/servlet-context.xml] non è valido;' – Siddharth

+0

è un prerequisito che il tuo progetto sia impostato come un progetto maven. Quindi aggiungi questo codice nella sezione delle dipendenze del tuo file pom.xml. –

-2

I SecurityMockMvcConfigurers classe è inclusa nel

<dependency> 
<groupId>org.springframework.security</groupId> 
<artifactId>spring-security-test</artifactId> 
<version>4.2.1.RELEASE</version> 
</dependency> 

In altre versioni potrebbero non esistere SecurityMockMvcConfigurers.

Tuttavia esiste una classe MockMvcConfigurer, è possibile che si possa lavorare con questo?

riguardo: ma questa dipendenza non contiene la classe corrispondente.

Sì, hai ragione che la classe non è inclusa nel barattolo. Quindi penso che devi usare quello che c'è. In ogni caso, la classe è piuttosto semplice e il codice sorgente è qui: si è fatto SecurityMockMvcConfigurers

Basta copiare il codice nella propria classe e.

+0

grazie per la risposta, ma questa dipendenza non contiene la classe corrispondente. –

0

La dipendenza richiesta per la classe org.springframework.security.test.web.servlet.setup.SecurityMockMvcConfigurers è il org.springframework.security:spring-security-test dipendenza.

La domanda è codificata Spring Boot e Spring Boot fornisce la dipendenza come dipendenza gestita nel pom spring-boot-starter-parent.
Il tuo pom eredita molto probabilmente da spring-boot-starter-parent.
Quindi, soprattutto, non specificare una versione senza un buon motivo e utilizzare semplicemente la versione ereditata dal genitore.
che è abbastanza:

<dependencies> 
    ... 
    <dependency> 
     <groupId>org.springframework.security</groupId> 
     <artifactId>spring-security-test</artifactId> 
     <scope>test</scope>   
    </dependency> 
    ... 
<dependencies> 

Per esempio con la Primavera Boot 2.0.0.M5, la versione gestita è

<dependency> 
    <groupId>org.springframework.security</groupId> 
    <artifactId>spring-security-test</artifactId> 
    <version>5.0.0.M5</version> 
    </dependency> 

Il M5 non è solo caso.
Questi sono progettati per funzionare "meglio" insieme.

Nota che la dipendenza org.springframework.boot:spring-boot-starter-test non causa la dipendenza spring-security-test.

Nel caso in cui non si utilizzi Spring Boot, è necessario tentare di specificare una versione spring-security-test conforme alla versione Core Spring utilizzata dall'applicazione.