Quantcast
Viewing all articles
Browse latest Browse all 14

Answer by Michael Pralow for Spring beans redefinition in unit test environment

I would propose a custom TestClass and some easy rules for the locations of the spring bean.xml:

@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(locations = {"classpath*:spring/*.xml","classpath*:spring/persistence/*.xml","classpath*:spring/mock/*.xml"})@Transactional@TestExecutionListeners({    DependencyInjectionTestExecutionListener.class,    TransactionalTestExecutionListener.class,    DirtiesContextTestExecutionListener.class})public abstract class AbstractHibernateTests implements ApplicationContextAware {    /**     * Logger for Subclasses.     */    protected final Logger log = LoggerFactory.getLogger(getClass());    /**     * The {@link ApplicationContext} that was injected into this test instance     * via {@link #setApplicationContext(ApplicationContext)}.     */    protected ApplicationContext applicationContext;    /**     * Set the {@link ApplicationContext} to be used by this test instance,     * provided via {@link ApplicationContextAware} semantics.     */    @Override    public final void setApplicationContext(            final ApplicationContext applicationContext) {        this.applicationContext = applicationContext;    }}

If there are mock-bean.xml in the specified location, they will override all "real"bean.xml files in the "normal" locations - your normal locations might differ.

But … I would never mix mock and non-mock beans, as it's hard to trace problems when the application grows older.


Viewing all articles
Browse latest Browse all 14

Trending Articles