Взаимодействие жизненного цикла JUnit @Rule с @Before

У меня есть несколько тестов JUnit, в которых используется TemporaryFolder @Rule . Они используют TemporaryFolder в методе @Before для выполнения некоторых настроек:

@Rule
public TemporaryFolder folder = new TemporaryFolder();

@Before
public void init() {
  folder.newFile("my-file.txt");
}

@Test
public void myTest() { ... }

В большинстве случаев это работает идеально.Однако при использовании SpringJUnit4ClassRunner я обнаружил, что в некоторых случаях метод init () вызывается перед оператором внутри моего экземпляра TemporaryFolder применены. Из-за этого местоположение временной папки не задано (например: null ), когда папка используется в init () , и мой файл оказывается в рабочем каталоге. , а не / tmp .

Таким образом, в некоторых случаях методы @Before выполняются раньше правил, однако я не могу установить определенный шаблон. Иногда я вижу аналогичную проблему с некоторыми из моих собственных реализаций правил.

Могу ли я убедиться, что мои правила применяются перед любыми методами настройки?

11
задан Paul Bellora 15 January 2015 в 04:57
поделиться