2

JUnit クラス内の JUnit メソッドを考えてみましょう。いくつかのテストといくつかの logger.info/debug ステートメントなどがあります。あなたは Junit メソッド内でログインしないかもしれませんが、私はログインしており、いくつかのテストが失敗した理由をすぐに知ることができるため、多くの手間を省くことができます。

おそらくSLF4Jを使用して、メソッドが最後に達した場合、これらのログステートメントを「消去」したいと思います

それを実装する簡単な方法は、

logger.tick();

さらなるログ ステートメントにフラグを立てるようロガーに指示します。

logger.tack();

tick フラグまでのすべてのログ ステートメントを消去します。問題は、Eclipse コンソールで内容を消去できないことです;)。

継続的な JUnit テストを使用しているので、これは私の人生をより幸せにしてくれます。

4

1 に答える 1

2

単体テスト内でのロギングについては自覚しませんが、ほとんどの人は、単体テストフレームワークに組み込まれているロギング機能をすでに使用していると思います。ただし、これを実装する場合は、ログを変数にキャプチャし(一部の人はを提案する場合がありますStringBuilder)、テストの最後にデッドマンスイッチに基づいてログをダンプする必要があります(スイッチが最後の動作にヒットしない場合)単体テストの目的は、保留されたログをダンプすることです)。

例は次のようになります。

public abstract class LoggedTest extends TestCase {
  protected boolean displayLog;
  protected StringBuilder log;

  public void tick() {
    displayLog = true;
  }

  public void tack() {
    displayLog = false;
  }

  public void log(String msg) {
    log.append(message);
  }

  protected void setUp() {
    displayLog = false;
    log = new StringBuilder();
  }

  protected void tearDown() {
    if(displayLog) {
      System.err.println(log);
    }
  }
}
于 2012-09-21T16:49:00.197 に答える