जैसा कि अन्य प्रतिक्रियाओं में कहा गया है, जिस क्रम में जुनीट को विधि मिलती है, उसकी गारंटी नहीं है, इसलिए @Before
विधियों के निष्पादन आदेश की गारंटी नहीं दी जा सकती है। @Rule
के बारे में भी यही सच है, यह गारंटी की समान कमी से पीड़ित है। यदि यह हमेशा एक ही कोड होगा, तो दो विधियों में विभाजित करने में कोई बात नहीं है।
यदि आपके पास दो विधियां हैं, और अधिक महत्वपूर्ण बात यह है कि, यदि आप उन्हें कई स्थानों से उपयोग करना चाहते हैं, तो आप RuleChain का उपयोग करके नियमों को जोड़ सकते हैं, जिसे 4.10 में पेश किया गया था।
public static class UseRuleChain {
@Rule
public TestRule chain= RuleChain
.outerRule(new LoggingRule("outer rule"))
.around(new LoggingRule("middle rule"))
.around(new LoggingRule("inner rule"));
@Test
public void example() {
assertTrue(true);
}
}
यह पैदा करता है:
starting outer rule
starting middle rule
starting inner rule
finished inner rule
finished middle rule
finished outer rule
तो आप या तो 4.10 में नवीनीकृत कर सकते हैं या सिर्फ वर्ग चोरी इस तरह के रूप में नियमों, के विशिष्ट आदेश देने की अनुमति देता है।
अपने मामले में, आप दो नियमों को परिभाषित कर सकते हैं, एक ग्राहक सेटअप के लिए और एक ऑब्जेक्ट के लिए, और RuleChain
में उन्हें गठबंधन कर सकते हैं। ExternalResource का उपयोग करना।
clientRule.before()
objectRule.before()
the test
objectRule.after()
clientRule.after()
स्रोत
2012-02-03 16:10:33
क्या एक baseclass के बारे में:
तो आप निम्नलिखित निष्पादन आदेश होगा? अन्यथा मैं विधियों के खिलाफ कोई बिंदु नहीं देखता ... – wuppi