Mam kilka testów JUnit, które używają TemporaryFolder
@Rule
. Używają TemporaryFolder
w metodzie @Before
wykonać pewne Setup:Interakcja JUnit @Rule lifecycle z @Before
@Rule
public TemporaryFolder folder = new TemporaryFolder();
@Before
public void init() {
folder.newFile("my-file.txt");
}
@Test
public void myTest() { ... }
Większość czasu to działa doskonale. Jednak przy korzystaniu z SpringJUnit4ClassRunner
stwierdzam, że w niektórych przypadkach metoda init()
jest wywoływana przed zastosowaniem instancji Statement
wewnątrz mojej instancji . Z tego powodu lokalizacja folderu tymczasowego jest rozbrajana (tj .: null
), gdy folder
jest używana w obrębie init()
, a mój plik kończy się w katalogu roboczym, a nie /tmp
.
W niektórych przypadkach metody są wykonywane przed regułami, jednak nie mogę ustalić określonego wzorca. Czasami widzę podobny problem z niektórymi z moich własnych implementacji reguł.
Czy jest jakiś sposób, aby upewnić się, że moje reguły zostały zastosowane przed metodami konfiguracji?
Dobre rozwiązanie @pholser. Używam JUnit 4.8.x i wygląda na to, że konstruuje łańcuchy w tej samej kolejności, co 4.10. Jednak metoda Block() jest nadpisana w SpringJUnit4ClassRunner i ustawia inną kolejność podobną do JUnit 4.7. – teabot