में समांतर परीक्षणों के लिए प्रति-परीक्षण डेटा आरंभ करें और साफ़ करें, जुनीट से टेस्टएनजी तक कुछ परीक्षणों को माइग्रेट करते समय, मुझे इस समस्या के ढांचे को उनके टेस्ट क्लास उदाहरणों के इलाज में अंतर के कारण एक समस्या का सामना करना पड़ रहा है।टेस्टएनजी
जुनीट प्रत्येक परीक्षण विधि के लिए टेस्ट क्लास का एक नया उदाहरण बनाता है। तो मुझे लगता है कि एक आम पैटर्न है:
public class MyTest {
private Stream inputData;
@Before
public void setUp() {
// Set up some data in (non-static) instance fields
// This data is isolated per test
inputData = createInputDataStream();
}
@Test
public void testStuff() {
// Use the data from the instance fields
doStuff(inputData);
}
@After
public void tearDown() {
// Clean up the data from the instance fields
closeInputDataStream(inputData);
}
}
इसके विपरीत, टेस्टएनजी सभी परीक्षण विधियों के लिए टेस्ट क्लास का एक उदाहरण का उपयोग करता है। तो उपरोक्त पैटर्न काम नहीं करता है! चूंकि डेटा उदाहरण फ़ील्ड में संग्रहीत होता है, मान अब अलग नहीं होते हैं। समानांतर निष्पादन सक्षम होने पर यह ओवरराइट किए गए डेटा मध्य-परीक्षण का कारण बन सकता है।
तो मैं टेस्टएनजी के साथ ऐसा कैसे करूं? क्या प्रत्येक @BeforeMethod
- @Test
- @AfterMethod
tuple से अलग डेटा संग्रहीत करने का कोई तरीका है?
मैं @Test
के अंदर सभी 3 चरणों को स्वयं कर सकता हूं, लेकिन इसके लिए प्रत्येक परीक्षण में try...finally
ब्लॉक जोड़ने की आवश्यकता होगी। मैंने ITestContext
का उपयोग करने का भी प्रयास किया, लेकिन यह पूरे परीक्षण चलाने के लिए भी साझा किया जाता है।
'@ BeforeMethod' और' @AfterMethod 'प्रत्येक' @ टेस्ट 'आमंत्रण के आसपास बुलाओ; इसलिए यह वर्णन किया गया है जैसा आपने वर्णन किया है। एकमात्र अंतर यह है कि आप एक नया उदाहरण बनाने के बजाय हर बार कक्षा राज्य को ओवरराइड करते हैं। क्या आपने उस दृष्टिकोण के साथ कोई अप्रत्याशित व्यवहार देखा था? या आप समानांतर में कक्षा में सभी परीक्षण चलाने की कोशिश कर रहे हैं (मुझे डर है कि यह संभव नहीं है)? –
@ कोस्टी सिउदातु मुख्य रूप से समांतर निष्पादन के दौरान - मूल्य कभी-कभी मध्य-परीक्षण को अधिलेखित करते हैं। – metacubed
यदि आप समानांतर ('') में कक्षा के भीतर परीक्षण विधियों को चलाने के लिए चाहते हैं, तो आप दौड़ की स्थिति के खिलाफ बचाव करने का कोई तरीका नहीं है, क्योंकि आप उत्परिवर्तनीय स्थिति बदल रहे हैं। –