Rumah >Java >javaTutorial >Bagaimanakah Saya Boleh Memberi Ujian JUnit Gagal Peluang Kedua untuk Lulus?
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:
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);
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!