Lädt Spring @DirtiesContext den Spring-Kontext neu?

Ich habe eine Testklasse, die aussieht

@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 intest-context.xml Ich definiere dieJUnitRuleMockery plus mehrere Scheinobjekte durch afactory-method, mögen

<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
}

ImTestClass Ich habe mehrere Testmethoden und aufgrund der Anmerkungen@DirtiesContextIch erwarte, dass der Spring-Kontext nach jeder Testausführung neu geladen wird (da jeder Test Erwartungen an Scheinobjekte stellt, muss ich den Spring-Kontext jedes Mal neu laden). Sehen@DirtiesContext von hier. Es scheint jedoch, dass der Spring-Kontext nicht neu geladen wird: Tatsächlich wird er zu Beginn von in den Debug-Modus versetzttest2 (angeblichtest1 wurde früher ausgeführt) Ich kann sehenjMockContext Hält noch Erwartungen, Ausführungsliste und Fehler (falls vorhanden) abtest1.
Also, um am Ende ein paar Fragen zu haben, tut es@DirtiesContext wirklich dazu führen, dass der Spring-Kontext neu geladen wird (wie ich es aus Spring Docs verstehe), oder habe ich die Anmerkung falsch verstanden? Was mache ich im ersten Fall falsch? Wie kann ich im letzteren Fall erzwingen, dass der Spring-Kontext für jeden Test neu geladen wird?

BEARBEITEN, um das Problem einzugrenzen: Ich hatte einen Code wie den obigen, der seit einigen Tagen ausgeführt wird, und heute habe ich einen neuen Test erstellt, in dem ich eine Erwartung hinzugefügt habe, die fehlgeschlagen ist. Dann sah ich alle anderen Tests in der Klasse aus dem gleichen Grund scheitern (während sie dort waren)green bis heute). Beim Debuggen habe ich das herausgefundenjMockContext wurde nie gelöscht, was bedeutet, dass alle Tests dem gleichen Pool Erwartungen hinzufügten: Solange keine Erwartung fehlschlug, war das natürlich transparent und ich bemerkte es nicht (test1 fügt hinzu und übertrifft wenig Erwartungen,test2 Nimmt ein nicht leerer Pool von Erwartungen BEREITS bestanden und fügt seinen eigenen hinzu, so gab es kein Problem), aber ich mag die vorherige Situation nicht und ich möchte jeden Test ohne vorherige gesetzte Erwartungen überhaupt beginnen.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage