junit
कस्टम टेस्ट नियम
खोज…
टिप्पणियों
इसके फायदे भी हैं। ExternalResource सोर्सिंग का विस्तार करना सुविधाजनक है, खासकर अगर हमें केवल कुछ सेट करने के लिए before() आवश्यकता होती है।
हालाँकि, हमें इस बात की जानकारी होनी चाहिए कि, चूंकि before() पद्धति को try...finally बाहर निष्पादित किया गया है try...finally , किसी भी कोड को after() में साफ करने के लिए आवश्यक है after() दौरान कोई त्रुटि होने पर निष्पादित नहीं किया जाएगा। before() निष्पादन before() ।
इस तरह यह अंदर दिखता है ExternalResource :
before();
try {
base.evaluate();
} finally {
after();
}
जाहिर है, अगर किसी अपवाद को परीक्षण में, या किसी अन्य नेस्टेड नियम द्वारा फेंक दिया जाता है, तो उसके बाद भी निष्पादित किया जाएगा।
कस्टम @TestRule कार्यान्वयन द्वारा
यह विशेष रूप से उपयोगी है यदि हमारे पास एक वर्ग है जिसे हम नियम में विस्तारित करना चाहते हैं। अधिक सुविधाजनक विधि के लिए नीचे उदाहरण देखें।
import org.junit.rules.TestRule;
import org.junit.runners.model.Statement;
public class AwesomeTestRule implements TextRule {
@Override
public Statement apply(Statement base, Description description) {
return new AwesomeStatement(base);
}
private static class AwesomeStatement extends Statement {
private Statement base;
public AwesomeStatement(Statement base) {
this.base = base;
}
@Override
public void evaluate() throws Throwable {
try {
// do your magic
base.evaluate(); // this will call Junit to run an individual test
} finally {
// undo the magic, if required
}
}
}
}
कस्टम @TestRule एक्सटेंशन द्वारा
JUnit में @TestRule का अमूर्त कार्यान्वयन है जो आपको अधिक सरल तरीके से एक नियम लिखने देता है। इसे ExternalResource कहा जाता है और दो संरक्षित तरीके प्रदान करता है जिन्हें इस तरह बढ़ाया जा सकता है:
public class AwesomeTestRule extends ExternalResource {
@Override
protected void before() {
// do your magic
}
@Override
protected void after() {
// undo your magic, if needed
}
}