2011-09-13 41 views
7

我正在嘗試使用Maven在我的spring web應用程序上運行一些單元測試。該應用程序安裝並運行良好,它會生成可部署的war文件(全部使用Maven)。配置問題:spring-security-web類不可用。你需要這些來使用<filter-chain-map>

我的測試類(位於SRC /測試/爪哇):

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

但是我收到錯誤:

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] 

當運行Maven > test

我POM dependcy被定義爲

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

默認爲compile範圍,which should be OK?當我將範圍更改爲testprovided時,它會返回相同的錯誤。

而且我.classpath看起來是這樣的:

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

如何建立我的應用程序上下文並測試是否正確?

+0

聽起來像一個類路徑的問題。你有沒有在你的'pom.xml'中包含所有必需的Spring依賴項,並使用適當的'scope'級別來確保Maven在測試階段將它們包含在你的類路徑中? – aroth

+0

好,我想我做到了,將編輯的問題 – NimChimpsky

回答

14

你必須包括在你的pom.xml在Servlet庫:

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

謝謝,我也有類似的問題,這是解決方案(org.springframework.security.web.FilterChainProxy進口幾javx.servlet類) –

+0

你是男人。 – OhadR

12

這是春季安全的bug。將Spring Security Web包含到您的pom.xml中。

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