प्रस्तावित टिप्पणी इस लेख के आधार पर कुछ अतिरिक्त के साथ लिखी गई थी ।
यहां, यदि आपके junit प्रोजेक्ट से कुछ टेस्ट केस "विफलता" या "त्रुटि" परिणाम प्राप्त करते हैं, तो यह टेस्ट केस एक बार फिर से चलाया जाएगा। पूरी तरह से यहाँ हम सफलता के परिणाम प्राप्त करने के लिए 3 मौका निर्धारित किया है।
इसलिए, हमें नियम कक्षा बनाने और अपने टेस्ट कक्षा में "@ नियम " सूचनाएं जोड़ने की आवश्यकता है ।
यदि आप अपने प्रत्येक टेस्ट क्लास के लिए "@ नियम" सूचनाओं को राइट नहीं करना चाहते हैं, तो आप इसे अपने अमूर्त सेटप्रॉपर्टी क्लास (यदि आपके पास है) में जोड़ सकते हैं और इससे निकाल सकते हैं।
नियम वर्ग:
import org.junit.rules.TestRule;
import org.junit.runner.Description;
import org.junit.runners.model.Statement;
public class RetryRule implements TestRule {
private int retryCount;
public RetryRule (int retryCount) {
this.retryCount = retryCount;
}
public Statement apply(Statement base, Description description) {
return statement(base, description);
}
private Statement statement(final Statement base, final Description description) {
return new Statement() {
@Override
public void evaluate() throws Throwable {
Throwable caughtThrowable = null;
for (int i = 0; i < retryCount; i++) {
try {
base.evaluate();
return;
} catch (Throwable t) {
caughtThrowable = t;
System.err.println(description.getDisplayName() + ": run " + (i + 1) + " failed.");
}
}
System.err.println(description.getDisplayName() + ": giving up after " + retryCount + " failures.");
throw caughtThrowable;
}
};
}
}
टेस्ट क्लास:
import org.junit.BeforeClass;
import org.junit.Rule;
import org.junit.Test;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
public class RetryRuleTest {
static WebDriver driver;
final private String URL = "http://www.swtestacademy.com";
@BeforeClass
public static void setupTest(){
driver = new FirefoxDriver();
}
@Rule
public RetryRule retryRule = new RetryRule(3);
@Test
public void getURLExample() {
driver.get(URL);
assertThat(driver.getTitle(), is("WRONG TITLE"));
}
}