Rumah > Java > javaTutorial > teks badan

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

Barbara Streisand
Lepaskan: 2024-10-30 10:58:02
asal
392 orang telah melayarinya

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

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

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!

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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!