Rumah > Java > javaTutorial > teks badan

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

Linda Hamilton
Lepaskan: 2024-10-31 09:58:02
asal
608 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan