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!