Spring @DirtiesContext перезагружает Spring-контекст?

У меня есть тестовый класс, который выглядит как

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

И вtest-context.xml Я определяюJUnitRuleMockery плюс несколько фиктивных объектов черезfactory-method, лайк








MockContextFactory является

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
}

ВTestClass У меня есть несколько методов испытаний и, из-за аннотаций@DirtiesContextЯ ожидаю перезагрузки контекста Spring после каждого выполнения теста (поскольку каждый тест устанавливает ожидания для фиктивных объектов, мне приходится каждый раз перезагружать контекст Spring). Увидеть@DirtiesContext отсюда, Однако, похоже, что контекст Spring не перезагружается: фактически, вход в режим отладки в началеtest2 (предположительноtest1 был выполнен ранее) я вижуjMockContext все еще содержит ожидания, список выполнения и ошибки (если таковые имеются) от.test1

Итак, чтобы в конечном итоге с несколькими вопросами, делает@DirtiesContext действительно ли перезагружается контекст Spring (как я понял из Spring Docs) или я неправильно понял аннотацию? В первом случае, что я делаю не так? В последнем случае, как я могу принудительно загрузить контекст Spring для каждого теста?

РЕДАКТИРОВАТЬ, чтобы разграничить проблему: у меня был код, подобный приведенному выше примеру, работающий от нескольких дней, а затем сегодня я создал новый тест, в котором я добавил ожидание, которое не удалось. Затем я увидел, что все остальные тесты в классе провалились по той же причине (пока ониgreen до сегодняшнего дня). Отладка, я узнал, чтоjMockContext никогда не очищался, что означает, что все тесты добавляли ожидания в один и тот же пул: конечно, до тех пор, пока ожидание не сработало, оно было прозрачным, и я этого не заметил (test1 добавляет и передает мало ожиданий,test2 берет непустой пул ожиданий, который УЖЕ пройден, и добавляет свои, чтобы не было проблем), но мне не нравится предыдущая ситуация, и я хотел бы начать каждый тест без каких-либо предыдущих ожиданий.

Ответы на вопрос(1)

Ваш ответ на вопрос