Coverage Summary for Class: TestLogHandler (com.google.common.testing)

Class Class, % Method, % Line, %
TestLogHandler 100% (1/1) 50% (3/6) 60% (6/10)


1 /* 2  * Copyright (C) 2008 The Guava Authors 3  * 4  * Licensed under the Apache License, Version 2.0 (the "License"); 5  * you may not use this file except in compliance with the License. 6  * You may obtain a copy of the License at 7  * 8  * http://www.apache.org/licenses/LICENSE-2.0 9  * 10  * Unless required by applicable law or agreed to in writing, software 11  * distributed under the License is distributed on an "AS IS" BASIS, 12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13  * See the License for the specific language governing permissions and 14  * limitations under the License. 15  */ 16  17 package com.google.common.testing; 18  19 import com.google.common.annotations.Beta; 20 import com.google.common.annotations.GwtCompatible; 21 import java.util.ArrayList; 22 import java.util.Collections; 23 import java.util.List; 24 import java.util.logging.Handler; 25 import java.util.logging.LogRecord; 26 import org.checkerframework.checker.nullness.qual.Nullable; 27  28 /** 29  * Tests may use this to intercept messages that are logged by the code under test. Example: 30  * 31  * <pre> 32  * TestLogHandler handler; 33  * 34  * protected void setUp() throws Exception { 35  * super.setUp(); 36  * handler = new TestLogHandler(); 37  * SomeClass.logger.addHandler(handler); 38  * addTearDown(new TearDown() { 39  * public void tearDown() throws Exception { 40  * SomeClass.logger.removeHandler(handler); 41  * } 42  * }); 43  * } 44  * 45  * public void test() { 46  * SomeClass.foo(); 47  * LogRecord firstRecord = handler.getStoredLogRecords().get(0); 48  * assertEquals("some message", firstRecord.getMessage()); 49  * } 50  * </pre> 51  * 52  * @author Kevin Bourrillion 53  * @since 10.0 54  */ 55 @Beta 56 @GwtCompatible 57 public class TestLogHandler extends Handler { 58  /** We will keep a private list of all logged records */ 59  private final List<LogRecord> list = new ArrayList<>(); 60  61  /** Adds the most recently logged record to our list. */ 62  @Override 63  public synchronized void publish(@Nullable LogRecord record) { 64  list.add(record); 65  } 66  67  @Override 68  public void flush() {} 69  70  @Override 71  public void close() {} 72  73  public synchronized void clear() { 74  list.clear(); 75  } 76  77  /** Returns a snapshot of the logged records. */ 78  /* 79  * TODO(cpovirk): consider higher-level APIs here (say, assertNoRecordsLogged(), 80  * getOnlyRecordLogged(), getAndClearLogRecords()...) 81  * 82  * TODO(cpovirk): consider renaming this method to reflect that it takes a snapshot (and/or return 83  * an ImmutableList) 84  */ 85  public synchronized List<LogRecord> getStoredLogRecords() { 86  List<LogRecord> result = new ArrayList<>(list); 87  return Collections.unmodifiableList(result); 88  } 89 }