Rumah  >  Artikel  >  Java  >  Bagaimana Anda Boleh Menangani Kegagalan Sementara dalam Ujian JUnit dengan Peraturan Cuba Semula?

Bagaimana Anda Boleh Menangani Kegagalan Sementara dalam Ujian JUnit dengan Peraturan Cuba Semula?

Linda Hamilton
Linda Hamiltonasal
2024-10-31 09:58:02613semak imbas

How Can You Handle Temporary Failures in JUnit Tests with a Retry Rule?

Mencuba Semula Ujian JUnit yang Gagal dengan Peraturan Cuba Semula

Ujian JUnit kadangkala boleh gagal disebabkan oleh kelewatan yang tidak dijangka dalam sistem yang sedang diuji. Untuk mengurangkan kegagalan tersebut, anda boleh menggunakan Peraturan Cuba Semula untuk memberi ujian yang gagal peluang kedua.

Untuk melaksanakan Peraturan Cuba Semula, buat peraturan tersuai dengan melanjutkan Peraturan. Kaedah apply() akan mentakrifkan logik di sekeliling ujian, termasuk gelung cuba semula:

<code class="java">public class Retry implements TestRule {
    private int retryCount;

    public Retry(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;

                // Retry loop
                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;
            }
        };
    }
}</code>

Gunakan Peraturan Cuba Semula pada kes ujian anda menggunakan @Rule:

<code class="java">public class RetryTest {
    @Rule
    public Retry retry = new Retry(3);

    // Test methods...
}</code>

Menggunakan TestRunner Tersuai

Sebagai alternatif, anda boleh mencipta TestRunner tersuai yang memanjangkan BlockJUnit4ClassRunner dan mengatasi kaedah runChild() untuk memasukkan logik cuba semula. Kaedah ini mengatasi cara kaedah ujian individu dijalankan.

Kesimpulan

Dengan menggunakan Peraturan Cuba Semula atau TestRunner tersuai, anda boleh meningkatkan ujian JUnit anda untuk mengendalikan kegagalan sementara dan memastikan kebolehpercayaan ujian walaupun dalam keadaan yang mencabar.

Atas ialah kandungan terperinci Bagaimana Anda Boleh Menangani Kegagalan Sementara dalam Ujian JUnit dengan Peraturan Cuba Semula?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn