2012-12-25 20 views
7

JUnitテストで警告を表示したいと思います。私はその警告のためにテストが失敗することを望んでいませんが、警告が発生していることを知りたいと思います。明らかに、私はSystem.err.printまたは類似のものを使うことができます。今、私はそれJUnitテストの警告

final Logger logger = LoggerFactory.getLogger(LoggingTest.class); 

@Test 
public void test() { 
    logger.warn("message"); 
} 

PS用にそれをコンソールアペンダと

+0

警告が表示される場所によって異なりますか?コンソール?一般的に出力レポートをテストしますか? – fge

答えて

5

これは時には役に立つと思っていますが、これはできません。 JUnitは正解と誤答を主張し、「成功」、「失敗」、「エラー」しか持たない。テストを実行しているときに何か問題が発生したときにエラーが発生します。私はリファクタリングを行い、実際に警告が必要かどうか(以前の回答が示唆しているように、この警告は間もなく失われると思いますが)、

+0

おそらく、バーはまだ赤ですが、TestSuite.warning(String)を使用してください。 –

4

利用ロガーを行うには権利の方法であるのだろうか。 slf4j loggerを使用した例

2

あなたのテストに固有のlog4j構成を持つことができます。

手順1:テスト用のlog4jの構成を含むsrc/test/resources/test-log4j.propertiesファイルを作成します。

例:

log4j.rootLogger=DEBUG, R 
log4j.appender.R=org.apache.log4j.ConsoleAppender 
log4j.appender.R.layout=org.apache.log4j.PatternLayout 
log4j.appender.R.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{3}:%L - %m%n 

は、ステップ2:次のようなあなたのpom.xmlを編集:今、あなたのlog4j.propertiesを/ srcに/メイン/ webappの/ WEB-INFにあります

<build> 
... 
<plugins> 

    <plugin> 
    <artifactid>maven-surefire-plugin</artifactid> 
    <version>2.3</version> 
    <configuration> 
     <systemproperties> 
     <property> 
      <!-- Specific log4j config for tests --> 
      <name>log4j.configuration</name> 
      <value>test-log4j.properties</value> 
     </property> 
     </systemproperties> 
    </configuration> 
    </plugin> 
    ... 
</plugins> 
</build> 

クラス/

希望すると便利です。