Heim > Java > javaLernprogramm > Wie kann ich nicht bestandenen JUnit-Tests eine zweite Chance zum Bestehen geben?

Wie kann ich nicht bestandenen JUnit-Tests eine zweite Chance zum Bestehen geben?

Susan Sarandon
Freigeben: 2024-10-29 06:35:02
Original
976 Leute haben es durchsucht

How Can I Give Failing JUnit Tests a Second Chance to Pass?

Ausführen fehlgeschlagener JUnit-Tests für eine zweite Chance

In JUnit ist es möglich, Tests so zu konfigurieren, dass sie eine zweite Chance zum Bestehen haben, wenn sie zunächst fehlschlagen. Dies kann besonders nützlich sein für Tests, die aufgrund externer Faktoren wie Netzwerkproblemen oder langsamer Serverantworten zeitweise fehlschlagen können. Hier sind zwei Methoden, um dies zu erreichen:

Verwendung einer Testregel

Mit einer Testregel können Sie benutzerdefinierte Logik definieren, die vor und nach jeder Testmethode ausgeführt wird. So erstellen Sie eine Testregel zum Wiederholen fehlgeschlagener Tests:

<code class="java">public class RetryTestRule implements TestRule {

    private int retryCount;

    public RetryTestRule(int retryCount) {
        this.retryCount = retryCount;
    }

    @Override
    public Statement apply(Statement base, 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;
                    }
                }
                throw caughtThrowable;
            }
        };
    }
}
Nach dem Login kopieren

Wenden Sie in Ihrer Testklasse die Regel auf die gewünschten Tests an:

<code class="java">@Rule
public RetryTestRule retry = new RetryTestRule(3);
Nach dem Login kopieren

Verwenden eines benutzerdefinierten TestRunners

Alternativ können Sie einen benutzerdefinierten TestRunner definieren, der die runChild()-Methode überschreibt, um zu steuern, wie jede Testmethode ausgeführt wird:

<code class="java">public class RetryTestRunner extends BlockJUnit4ClassRunner {
    private int retryCount;

    public RetryTestRunner(Class<?> testClass) {
        super(testClass);
        Annotation annotation = AnnotationUtils.getAnnotation(testClass, Retry.class);
        if (annotation != null) {
            retryCount = ((Retry) annotation).value();
        }
    }

    @Override
    protected void runChild(FrameworkMethod method, RunNotifier notifier) {
        for (int i = 0; i < retryCount; i++) {
            try {
                super.runChild(method, notifier);
                return;
            } catch (Throwable t) {
                if (i == retryCount - 1) {
                    throw t;
                }                
            }
        }
    }
}</code>
Nach dem Login kopieren

Verwenden Sie in Ihrer Testklasse den benutzerdefinierten TestRunner mit @RunWith:

<code class="java">@RunWith(RetryTestRunner.class)
@Retry(3)
public class MyTestClass {}</code>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann ich nicht bestandenen JUnit-Tests eine zweite Chance zum Bestehen geben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage