Czy Spring @DirtiesContext ładuje kontekst Springa?

Mam klasę testową, która wygląda

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

i wtest-context.xml DefiniujęJUnitRuleMockery plus kilka próbnych obiektów przez afactory-method, lubić

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

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
}

WTestClass Mam kilka metod testowych i ze względu na adnotacje@DirtiesContext, Spodziewam się, że kontekst Springa zostanie ponownie załadowany po każdym wykonaniu testu (ponieważ każdy test wyznacza oczekiwania na pozorowane obiekty, za każdym razem muszę ładować kontekst Springa). Widzieć@DirtiesContext stąd. Wydaje się jednak, że kontekst Springa nie jest przeładowywany: w rzeczywistości wchodzenie w tryb debugowania na początkutest2 (podobnotest1 został wykonany wcześniej) WidzęjMockContext wciąż trzymam oczekiwania, listę egzekucji i błędy (jeśli występują)test1.
Tak więc, aby skończyć z kilkoma pytaniami, tak@DirtiesContext Naprawdę powoduję ponowne załadowanie kontekstu Springa (tak jak zrozumiałem z Spring Docs), czy też źle zrozumiałem adnotację? W pierwszym przypadku, co robię źle? W tym drugim przypadku, jak mogę zmusić kontekst Spring do ponownego załadowania dla każdego testu?

EDYTOWAĆ, aby określić problem: miałem kod podobny do powyższego przykładu, działający od kilku dni, a dzisiaj stworzyłem nowy test, w którym dodałem oczekiwanie, które się nie powiodło. Potem widziałem wszystkie inne testy w klasie z tego samego powodu (podczas gdy onigreen Do dzisiaj). Debugowanie, dowiedziałem się o tymjMockContext nigdy nie zostało wyczyszczone, co oznacza, że ​​wszystkie testy dodawały oczekiwania do tej samej puli: oczywiście, dopóki nie oczekiwał nieudanego oczekiwania, co było przejrzyste i nie zauważyłem tego (test1 dodaje i mija kilka oczekiwań,test2 przyjmuje nieopuszczoną pulę Oczekiwania JUŻ i dodaje swoją własną, więc nie było problemu), ale nie podoba mi się poprzednia sytuacja i chciałbym rozpocząć każdy test bez wcześniejszych oczekiwań.

questionAnswers(1)

yourAnswerToTheQuestion