Junit - 通过注释加载Spring XML配置

时间:2015-08-11 20:05:32

标签: java spring junit apache-camel cxf

我正在使用Camel 2.15.2,Spring 4.1.7.RELEASE,CXF 3.0.4,Junit 4.12。

当我运行以下测试时,加载Spring应用程序上下文失败:

@RunWith(CamelSpringJUnit4ClassRunner.class)
@BootstrapWith(CamelTestContextBootstrapper.class)
@ContextConfiguration(locations=
            {
                "classpath:com/me/someFile.xml",
                "classpath:META-INF/spring/someFile.xml"
            })
public class MyRouteTest extends CamelTestSupport
{
    //...
}

以下是我得到的例外情况:

Caused by: java.lang.IllegalArgumentException: Cannot find RouteContext with id someRoute
    at org.apache.camel.model.RouteContextRefDefinitionHelper.lookupRoutes(RouteContextRefDefinitionHelper.java:65)

但是当我运行此测试时,Spring应用程序上下文成功加载:

public class MyRouteTest extends CamelSpringTestSupport
{
    @Override
    protected AbstractApplicationContext createApplicationContext()
    {
        return new ClassPathXmlApplicationContext(new String[]
                {
                    "classpath:com/me/someFile.xml",
                    "classpath:META-INF/spring/someFile.xml"
                });
    }

    //...
}

为什么第一种情况会失败?

这两种方式加载Spring应用程序上下文不等同吗?

1 个答案:

答案 0 :(得分:0)

我认为答案与这个问题相同。 AbstractApplicationContext versus ApplicationContext如果没有看到您的实际上下文文件,就很难确切地看到为什么var shaderMaterial = new THREE.ShaderMaterial(shaderProperties); var geometry = new THREE.SphereBufferGeometry(3, 90, 90); var displacement = new Float32Array(geometry.attributes.position.count); for (var v = 0; v < displacement.length; v++) { displacement[v] = Math.random() * 2; } geometry.addAttribute("displacement", new THREE.BufferAttribute(displacement, 1)); 注释所要求的更严格的ApplicationContext实现失败了。希望这有帮助!