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.
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>
Untuk menggunakan penambah tersuai dalam ujian JUnit anda, ikut langkah berikut:
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>
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!