2011-09-13 6 views
7

Sto tentando di eseguire alcuni test unitari sulla mia app Web Spring utilizzando Maven. L'app si installa e funziona bene, genera un file di guerra deployable tutto OK (tutto con Maven).Problema di configurazione: le classi spring-security-web non sono disponibili. È necessario che questi utilizzino <filter-chain-map>

La mia classe di test (che si trova in src/test/java):

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(locations={"file:C:/myProjects/myWebapp/src/main/webapp/WEB-INF/applicationContext-test.xml"}) 
@Transactional 
public class MyTest { 
... 

Tuttavia ricevo l'errore:

Configuration problem: spring-security-web classes are not available. You need these to use <filter-chain-map> 

Offending resource: URL [file:C:/myProjects/myWebapp/src/main/webapp/WEB-INF/applicationContext-test.xml] 

Quando si esegue Maven > test

mio pom dependcy è definito come

<dependency> 
<groupId>org.springframework.security</groupId> 
<artifactId>spring-security-web</artifactId> 
<version>3.0.5.RELEASE</version>     
</dependency> 

Quale valore predefinito per l'ambito compile, which should be OK? Restituisce lo stesso errore quando cambio l'ambito su test e provided.

E il mio .classpath assomiglia a questo:

<classpath> 
    <classpathentry kind="src" output="target/classes" path="src/main/java"/> 
    <classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources"/> 
    <classpathentry kind="src" output="target/test-classes" path="src/test/java"/> 
    <classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources"/> 

Come faccio a impostare-up mio contesto app e test in modo corretto?

+0

Sembra un problema di classpath. Hai incluso tutte le dipendenze di Spring richieste nel tuo 'pom.xml', con il livello' scope' appropriato per assicurarti che Maven le includa sul tuo classpath durante la fase di test? – aroth

+0

beh pensavo di averlo fatto, modificherò la domanda – NimChimpsky

risposta

14

si deve includere la libreria Servlet nel pom.xml:

<dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>servlet-api</artifactId> 
     <version>{version}</version> 
     <scope>provided</scope> 
    </dependency> 
+0

Grazie, ho avuto un problema simile e quella era la soluzione (org.springframework.security.web.FilterChainProxy importa alcune classi javx.servlet) –

+0

tu sei l'uomo. – OhadR

12

E 'un bug di Primavera di sicurezza. Includi Spring Security Web sul tuo pom.xml.

<dependency> 
    <groupId>org.springframework.security</groupId> 
    <artifactId>spring-security-web</artifactId> 
    <version>3.0.5.RELEASE</version> 
</dependency> 
Problemi correlati