Replace spring bean in one context with mock version from another context

Ram picture Ram · Oct 9, 2012 · Viewed 18.8k times · Source

I'm writing an integration test where an application context xml is initialized during startup. There are several test methods in the test class which make use of a specific bean 'X'(already defined in the xml). My actual requirement is to mock bean X only for one of the test methods.

Inside a test method: I tried creating a separate application context using ClassPathXMLApplicationContext with only the mock bean 'M'.

Now I have two Application Contexts (AC): 1. One created during test case startup (which contains the actual bean X) and 2. One created using ClassPathXMLApplicationContext within the test method (which has the mock bean M).

I want to replaced the actual bean definition 'X' within AC:1, using the mock bean definition 'M' from AC:2.

Can somebody throw some light on this please?

Answer

G-Man picture G-Man · Oct 9, 2012

You can :

  • use the Profile annotation if you have spring 3.1.
  • use the Primary annotation
  • use qualifiers
  • wire the bean yourself in the spring context

and i'm sure there are even more options.