diff --git a/spring-context/src/test/java/org/springframework/context/annotation/ComponentScanParserScopedProxyTests.java b/spring-context/src/test/java/org/springframework/context/annotation/ComponentScanParserScopedProxyTests.java index baa70d5ba99..5d93bbbc99b 100644 --- a/spring-context/src/test/java/org/springframework/context/annotation/ComponentScanParserScopedProxyTests.java +++ b/spring-context/src/test/java/org/springframework/context/annotation/ComponentScanParserScopedProxyTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2013 the original author or authors. + * Copyright 2002-2015 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,24 +16,32 @@ package org.springframework.context.annotation; -import example.scannable.FooService; -import example.scannable.ScopedProxyTestBean; +import org.junit.Rule; import org.junit.Test; +import org.junit.rules.ExpectedException; import org.springframework.aop.support.AopUtils; -import org.springframework.beans.FatalBeanException; +import org.springframework.beans.factory.parsing.BeanDefinitionParsingException; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.tests.context.SimpleMapScope; import org.springframework.util.SerializationTestUtils; +import example.scannable.FooService; +import example.scannable.ScopedProxyTestBean; + +import static org.hamcrest.CoreMatchers.*; import static org.junit.Assert.*; /** * @author Mark Fisher * @author Juergen Hoeller + * @author Sam Brannen */ public class ComponentScanParserScopedProxyTests { + @Rule + public final ExpectedException exception = ExpectedException.none(); + @Test public void testDefaultScopedProxy() { ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext( @@ -42,6 +50,7 @@ public class ComponentScanParserScopedProxyTests { ScopedProxyTestBean bean = (ScopedProxyTestBean) context.getBean("scopedProxyTestBean"); // should not be a proxy assertFalse(AopUtils.isAopProxy(bean)); + context.close(); } @Test @@ -52,6 +61,7 @@ public class ComponentScanParserScopedProxyTests { ScopedProxyTestBean bean = (ScopedProxyTestBean) context.getBean("scopedProxyTestBean"); // should not be a proxy assertFalse(AopUtils.isAopProxy(bean)); + context.close(); } @Test @@ -68,6 +78,7 @@ public class ComponentScanParserScopedProxyTests { FooService deserialized = (FooService) SerializationTestUtils.serializeAndDeserialize(bean); assertNotNull(deserialized); assertEquals("bar", deserialized.foo(1)); + context.close(); } @Test @@ -83,18 +94,16 @@ public class ComponentScanParserScopedProxyTests { ScopedProxyTestBean deserialized = (ScopedProxyTestBean) SerializationTestUtils.serializeAndDeserialize(bean); assertNotNull(deserialized); assertEquals("bar", deserialized.foo(1)); + context.close(); } @Test - public void testInvalidConfigScopedProxy() { - try { - new ClassPathXmlApplicationContext( - "org/springframework/context/annotation/scopedProxyInvalidConfigTests.xml"); - fail("should have thrown Exception; scope-resolver and scoped-proxy both provided"); - } - catch (FatalBeanException e) { - // expected - } + @SuppressWarnings("resource") + public void testInvalidConfigScopedProxy() throws Exception { + exception.expect(BeanDefinitionParsingException.class); + exception.expectMessage(containsString("Cannot define both 'scope-resolver' and 'scoped-proxy' on tag")); + exception.expectMessage(containsString("Offending resource: class path resource [org/springframework/context/annotation/scopedProxyInvalidConfigTests.xml]")); + new ClassPathXmlApplicationContext("org/springframework/context/annotation/scopedProxyInvalidConfigTests.xml"); } }