2011-09-13 15 views
7

Estoy intentando ejecutar algunas pruebas de unidad en mi aplicación web Spring utilizando Maven. La aplicación se instala y se ejecuta correctamente, genera un archivo war desplegable todo OK (todo con Maven).Problema de configuración: las clases spring-security-web no están disponibles. Necesitará que utilicen <filter-chain-map>

Mi clase de prueba (que se encuentra en src/test/java):

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

Sin embargo Recibo el error:

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] 

Cuando se ejecuta Maven > test

Mi dependcy pom se define como

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

¿Cuál es el valor predeterminado de compile, which should be OK? Devuelve el mismo error cuando cambio el alcance a test y provided.

Y mi .classpath se parece a esto:

<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"/> 

¿Cómo configuro mi contexto de aplicaciones y pruebas correctamente?

+0

Suena como un problema de classpath. ¿Ha incluido todas las dependencias Spring requeridas en su 'pom.xml', con el nivel' scope' apropiado para asegurarse de que Maven las incluya en su classpath durante la fase de prueba? – aroth

+0

bueno, pensé que sí, editaré la pregunta – NimChimpsky

Respuesta

14

tiene que incluir la biblioteca de servlets en su pom.xml:

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

Gracias, tuve un problema similar y esa fue la solución (org.springframework.security.web.FilterChainProxy importa algunas clases de javx.servlet) –

+0

eres el hombre. – OhadR

12

Es un bug de la primavera de Seguridad. Incluya Spring Security Web a su pom.xml.

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