Java 如何让我的Spring JUnit测试认为它运行在一个通用的应用程序上下文中?
我使用的是Java 如何让我的Spring JUnit测试认为它运行在一个通用的应用程序上下文中?,java,spring,unit-testing,junit,integration-testing,Java,Spring,Unit Testing,Junit,Integration Testing,我使用的是spring3.2.6.RELEASE,junit4.11,以及dwr3.0.0-rc2。我的问题是,在运行SpringJUnit集成测试时,如何模拟在org.springframework.context.support.GenericaApplicationContext中运行的东西 我试过这个: @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration({ "classpath:test-context.xml",
spring3.2.6.RELEASE
,junit4.11
,以及dwr3.0.0-rc2
。我的问题是,在运行SpringJUnit集成测试时,如何模拟在org.springframework.context.support.GenericaApplicationContext
中运行的东西
我试过这个:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({ "classpath:test-context.xml", "classpath:dwr-context.xml" })
@WebAppConfiguration
public class MyServiceIT
{}
其中我的“dwr context.xml”文件设置为
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:dwr="http://www.directwebremoting.org/schema/spring-dwr"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.directwebremoting.org/schema/spring-dwr http://www.directwebremoting.org/schema/spring-dwr-3.0.xsd">
<dwr:configuration>
<dwr:convert class="java.lang.StackTraceElement" type="bean"/>
</dwr:configuration>
<dwr:annotation-config id="annotationConfig" />
<dwr:annotation-scan base-package="org.mainco.subco" scanDataTransferObject="true" scanRemoteProxy="true" />
<dwr:url-mapping />
<dwr:controller id="dwrController" debug="false" />
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="alwaysUseFullPath" value="true"/>
<property name="urlMap">
<map>
<entry key="/dwr/**" value-ref="dwrController" />
</map>
</property>
</bean>
</beans>
我遇到了同样的错误并修复了它 测试类中的
@WebAppConfiguration
,如下所示:
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.WebAppConfiguration;
import com.arpit.jsr.config.DataConfig;
import com.arpit.jsr.config.WebConfig;
@WebAppConfiguration
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { WebConfig.class, DataConfig.class })
public class ServiceTest {
@Test
public void testSayHello() {
Assert.assertEquals("Hello world!", "Hello world!");
}
}
您的问题是错误的:您的问题是您正在一个通用的ApplicationContext中运行,但您的Dwr*beans需要一个WebApplicationContext。您好..您是否能够解决此问题..如果可以,请提供一个示例..@EvaMariam在我的情况下,通过在测试中添加WebAppConfiguration注释解决了问题class@EvaMariam它起作用了,当我从Spring4.2升级到4.3,并且我的一些测试由于同样的错误开始失败时,这个修复对我来说是有效的。
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.WebAppConfiguration;
import com.arpit.jsr.config.DataConfig;
import com.arpit.jsr.config.WebConfig;
@WebAppConfiguration
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { WebConfig.class, DataConfig.class })
public class ServiceTest {
@Test
public void testSayHello() {
Assert.assertEquals("Hello world!", "Hello world!");
}
}