साथ JUnit @Rule जीवन चक्र बातचीत मुझे लगता है कि TemporaryFolder
@Rule
का उपयोग कुछ JUnit परीक्षण किया है। वे एक @Before
विधि में TemporaryFolder
का उपयोग कुछ सेटअप प्रदर्शन करने के लिए:@Before
@Rule
public TemporaryFolder folder = new TemporaryFolder();
@Before
public void init() {
folder.newFile("my-file.txt");
}
@Test
public void myTest() { ... }
समय इस पूरी तरह से काम करता है के अधिकांश। हालांकि, जब का उपयोग कर SpringJUnit4ClassRunner
मुझे लगता है कि कुछ मामलों में init()
विधि मेरी TemporaryFolder
उदाहरण के अंदर Statement
से पहले शुरू हो जाती है लागू किया जाता है। इस वजह से, अस्थायी फ़ोल्डर स्थान सेट नहीं की जाती हैं (यानी: null
) जब folder
init()
भीतर प्रयोग किया जाता है और मेरी फाइल, /tmp
काम कर निर्देशिका में समाप्त होता है नहीं।
@Before
तरीकों नियमों के आगे क्रियान्वित कर रहे हैं में
तो, हालांकि, मैं एक निश्चित पैटर्न स्थापित नहीं कर सकते। मैं कभी-कभी अपने कुछ नियम कार्यान्वयन के साथ एक समान समस्या देखता हूं।
क्या कोई तरीका है कि मैं यह सुनिश्चित कर सकता हूं कि मेरे नियम विवरण किसी भी सेटअप विधियों से पहले लागू हो जाएं?
अच्छा खोज @pholser। मैं जुनीट 4.8.एक्स का उपयोग कर रहा हूं और यह 4.10 के समान क्रम में श्रृंखला बनाने के लिए प्रतीत होता है। हालांकि, methodBlock() को SpringJUnit4ClassRunner में ओवरराइड किया गया है और जुनीट 4.7 के समान एक अलग क्रम सेट करता है। – teabot