Rumah  >  Artikel  >  Java  >  Bagaimana untuk Menegaskan Mesej Log dalam Ujian JUnit menggunakan Penambah Tersuai?

Bagaimana untuk Menegaskan Mesej Log dalam Ujian JUnit menggunakan Penambah Tersuai?

Barbara Streisand
Barbara Streisandasal
2024-10-30 10:58:02393semak imbas

How to Assert Log Messages in JUnit Tests using a Custom Appender?

Cara Menegaskan Mesej Log dalam Ujian JUnit

Apabila menguji kod yang menggunakan pembalak Java, ia menjadi penting untuk mengesahkan bahawa entri log yang dijangka sedang dijana. Satu pendekatan biasa melibatkan mencipta pembalak atau pengendali tersuai untuk menangkap peristiwa log. Walau bagaimanapun, terdapat penyelesaian yang lebih mudah yang memanfaatkan komponen pengelogan sedia ada.

Menggunakan Appender Tersuai

Untuk menegaskan mesej log dalam ujian JUnit, anda boleh membuat Appender Log4j tersuai yang memintas dan menyimpan log peristiwa. Berikut ialah contoh pelaksanaan:

<code class="java">import org.apache.log4j.AppenderSkeleton;
import org.apache.log4j.Level;
import org.apache.log4j.spi.LoggingEvent;
import java.util.ArrayList;
import java.util.List;

public class TestAppender extends AppenderSkeleton {
    private final List<LoggingEvent> log = new ArrayList<>();

    @Override
    public boolean requiresLayout() { return false; }

    @Override
    protected void append(LoggingEvent loggingEvent) { log.add(loggingEvent); }

    @Override
    public void close() {}

    public List<LoggingEvent> getLog() { return new ArrayList<>(log); }
}</code>

Mengintegrasikan Penambah

Untuk menggunakan penambah tersuai dalam ujian JUnit anda, ikut langkah berikut:

  1. Tambahkan penambah ke pembalak yang anda mahu pantau.
  2. Laksanakan kod yang sedang diuji untuk mencetuskan operasi pembalakan.
  3. Dapatkan semula peristiwa log yang ditangkap daripada penambah.
  4. Tegaskan mesej log yang dikehendaki dan tahap menggunakan penegasan JUnit.

Berikut ialah contoh:

<code class="java">@Test
public void test() {
    TestAppender appender = new TestAppender();
    Logger logger = Logger.getRootLogger();
    logger.addAppender(appender);
    try {
        // Execute code that calls the logger.
        Logger.getLogger(MyTest.class).info("Test");
    } finally {
        logger.removeAppender(appender);
    }

    List<LoggingEvent> log = appender.getLog();
    LoggingEvent firstLogEntry = log.get(0);
    assertThat(firstLogEntry.getLevel(), is(Level.INFO));
    assertThat((String) firstLogEntry.getMessage(), is("Test"));
    assertThat(firstLogEntry.getLoggerName(), is("MyTest"));
}</code>

Pertimbangan

  • Pembersihan: Ingat untuk mengalih keluar appender tersuai selepas menyelesaikan ujian anda untuk mengelakkan kebocoran memori.
  • Skalabiliti: Untuk senario pengelogan yang berat, pertimbangkan untuk menambah penapis pada appender untuk mengelakkan penggunaan memori yang berlebihan.
  • Kebutiran: Anda boleh menggunakan berbilang penambah tersuai untuk memantau pembalak tertentu atau bahkan kelas individu, memberikan kawalan terperinci ke atas pengesahan log.

Atas ialah kandungan terperinci Bagaimana untuk Menegaskan Mesej Log dalam Ujian JUnit menggunakan Penambah Tersuai?. 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