Rumah >Java >javaTutorial >Bagaimanakah Saya Boleh Memberi Ujian JUnit Gagal Peluang Kedua untuk Lulus?

Bagaimanakah Saya Boleh Memberi Ujian JUnit Gagal Peluang Kedua untuk Lulus?

Susan Sarandon
Susan Sarandonasal
2024-10-29 06:35:021016semak imbas

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

Menjalankan Ujian JUnit Gagal untuk Peluang Kedua

Dalam JUnit, adalah mungkin untuk mengkonfigurasi ujian untuk mempunyai peluang kedua untuk lulus apabila gagal pada mulanya. Ini amat berguna untuk ujian yang mungkin gagal seketika disebabkan faktor luaran, seperti isu rangkaian atau respons pelayan yang perlahan. Berikut ialah dua kaedah untuk mencapai ini:

Menggunakan TestRule

TestRule membolehkan anda menentukan logik tersuai untuk dilaksanakan sebelum dan selepas setiap kaedah ujian. Untuk mencipta TestRule untuk mencuba semula ujian yang gagal:

<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;
            }
        };
    }
}

Dalam kelas ujian anda, gunakan peraturan pada ujian yang diingini:

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

Menggunakan TestRunner Tersuai

Sebagai alternatif, anda boleh menentukan TestRunner tersuai yang mengatasi kaedah runChild() untuk mengawal cara setiap kaedah ujian dilaksanakan:

<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>

Dalam kelas ujian anda, gunakan TestRunner tersuai dengan @RunWith:

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

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memberi Ujian JUnit Gagal Peluang Kedua untuk Lulus?. 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