Tut Spring @DirtiesContext neu laden Spring-Kontext?

Habe ich eine test-Klasse, die sieht aus wie

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:/test-context.xml"})
@DirtiesContext(classMode = ClassMode.AFTER_EACH_TEST_METHOD)
public abstract class TestClass {
  @Rule @Resource public JUnitRuleMockery jMockContext;

  public void test1() {
    //Expectations and test
  }
  public void test2() {
    //Expectations and test
  }
}

und in test-context.xml definiere ich das JUnitRuleMockery plus mehrere mock-Objekte durch eine factory-method wie

<bean id="mockContextFactory" class="MockContextFactory" />

<bean id="jMockContext" factory-bean="mockContextFactory" factory-method="getContext" scope="prototype" />

<bean id="firstMock" factory-bean="mockContextFactory" factory-method="getFirstMock" />

<bean id="secondMock" factory-bean="mockContextFactory" factory-method="getSecondMock" />

MockContextFactory ist

public class MockContextFactory
{
  private JUnitRuleMockery jUnitRuleMockery;

  public MockContextFactory() {
    jUnitRuleMockery = new JUnitRuleMockery();
    jUnitRuleMockery.setThreadingPolicy(new Synchroniser());
  }

  public JUnitRuleMockery getContext() {
    return jUnitRuleMockery;
  }

  public FirstMock getFirstMock() {
    return jUnitRuleMockery.mock(FirstMock.class);
  }
  //others getter
}

In TestClass ich habe mehrere test-Methoden und aufgrund der Anmerkungen @DirtiesContext ich erwarte den Frühling Kontext neu geladen werden nach jedem test in der Ausführung (da jeder test setzt die Erwartungen an das mock-Objekte, ich habe die reload-Spring-Kontext jedes mal). Sehen @DirtiesContext von hier. Es scheint jedoch, dass die Spring-Kontext ist nicht neu geladen wird: in der Tat, die Eingabe in den debug-Modus am Anfang test2 (angeblich test1 ausgeführt wurde früher) ich kann sehen jMockContext Sie noch die Erwartungen, die Ausführung der Liste und Fehler (falls vorhanden) von test1.

So, zu Ende mit einigen Fragen, tut @DirtiesContext wirklich Ursache Frühjahr Kontext neu geladen werden soll (wie ich verstanden habe vom Frühjahr Docs) oder habe ich da was missverstehen die annotation? Im ersten Fall, was mache ich falsch? Im letzteren Fall ist, wie kann ich erzwingen, Spring-Kontext geladen werden für jeden test?

BEARBEITEN, begrenzen das problem: ich hatte einen code, wie im Beispiel oben läuft von paar Tage, dann habe ich heute erstellt einen neuen test, bei dem ich fügte hinzu, eine Erwartung, die fehlgeschlagen. Dann sah ich alle anderen Prüfungen in der Klasse scheitern aus dem gleichen Grund (während Sie, wo green bis heute). Debugging fand ich heraus, dass jMockContext wurde nie geklärt, was bedeutet, dass alle tests wurden zusätzlich die Erwartungen an die selben pool: natürlich, solange keine Erwartung gescheitert, das war transparent und ich habe es nicht bemerkt (test1 fügt und übergibt wenige Erwartungen, test2 nimmt einen nicht-leeren pool von Erwartungen BEREITS überschritten und fügt seine eigenen so war es kein problem), aber ich weiß nicht, wie die früheren situation, und ich möchte zu Beginn der einzelnen Prüfung ohne vorherigen Erwartungen.

Schreibe einen Kommentar