我有一個Maven web項目我想執行一些JUnit集成測試。爲了實現這一點,我想加載applicationContext.xml文件來獲取Spring注入的bean。此外,我的應用程序上下文文件位於src/main/resources/app_context
中,但執行Maven的生命週期時,它將它們定位到WEB-INF/classes/application_context
,因此我可以通過類路徑訪問它們。如何在Maven測試中加載Spring應用程序上下文
<resource>
<directory>src/main/resources/appcontext</directory>
<targetPath>${basedir}/src/main/webapp/WEB-INF/classes/application_context</targetPath>
<filtering>true</filtering>
<includes>
<include>*/**</include>
</includes>
</resource>
我試圖在某些方面訪問該上下文,但沒有成功。我也把它們放入Maven的目標test目錄那樣:
<testResources>
<testResource>
<directory>
src/main/resources/appcontext
</directory>
<targetPath>${basedir}/src/main/webapp/WEB-INF/classes/application_context</targetPath>
</testResource>
</testResources>
這是我的一塊試驗:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:**/applicationContext.xml" })
@Transactional
public class SystemTest {
@Autowired
ApplicationContext applicationContext;
@Test
public void initializeSystemTest() {
//Test code
這就是我如何可以訪問應用程序上下文的其餘部分從我的主要文件之一:
<?xml version="1.0" encoding="ISO-8859-15"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:cxf="http://cxf.apache.org/core" xmlns:jaxws="http://cxf.apache.org/jaxws"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.1.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd">
<import resource="classpath:application_context/ApplicationContext*.xml" />
<context:annotation-config />
<!--========== Spring Data Source ========== -->
<!--Bean stuff-->
基本上我想只有一個存儲在src/main/resources
ApplicationContext的文件中的每一個副本,讓Maven的複製他們的測試和exec範圍。但是我的測試類無法找到並加載它們。我必須做什麼?
你爲什麼要從'appcontext'複製到'application_context'?這隻會混淆問題。爲什麼不使用默認值,在這種情況下,'src/main/resources/appcontext'會在'WEB-INF/classes/appcontext'中結束?在你的SCM上它也會更容易,因爲你在構建時不會因'src'的變化而結束。 – artbristol
好點@artbristol。 –