在测试之前强制Spring上下文重新加载

时间:2013-12-10 12:49:17

标签: java spring junit

有没有办法在测试之前强制完全重建Spring上下文 ? 使用@DirtiesContext标记它不会影响当前测试。 为什么:在测试之前的原因我设置了一些系统属性,这些属性会影响构建期间的上下文。

2 个答案:

答案 0 :(得分:0)

对不起,我不这么认为。

我还没试过这个,但是一个解决方法可能是在@Before@BeforeClass方法中获取上下文,并调用reload。

您的测试应该按照Spring Framework Reference中的测试上下文指南获取上下文(并将其转换为ConfigurableApplicationContext)。

答案 1 :(得分:0)

好吧,我设法做到了......但我警告你,很脏!

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { .... })
// order of test methods is important!
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class MyTest {
  static {
    System.setProperty("myprop", "myvalue");
  }

  /**
   * Fake test that forces spring to reload context before real tests.
   */
  @Test
  @DirtiesContext
  public void aaReloadContext() {

  }

  /**
   * Fake test that clears system property after tests.
   */
  @Test
  public void zzClearProperty() {

    System.clearProperty("myprop");
  }

  ... real test methods...