2012-12-25 137 views
7

我想在JUnit测试中显示警告。我不希望测试因该警告而失败,但我想知道发生了警告。显然,我可以使用System.err.print或类似的东西。现在我不知道什么是正确的方式与控制台的appender做JUnit测试中的警告

+0

这取决于您想要显示的警告的位置?安慰?测试输出报告一般? – fge

回答

5

我也曾认为这有时会有用,但这是不能做到的。 JUnit坚持正确和错误的答案,因此只有“成功”,“失败”和“错误”。运行测试时代码在代码中出现故障时出错。我会重构并考虑是否真的需要警告(或者像之前回答建议的日志,尽管我认为此警告很快会丢失),

+0

可能使用TestSuite.warning(String),尽管该栏仍然是红色的。 –

4

使用记录它

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

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

PS。使用slf4j记录器的示例。

2

您可以针对您的测试使用log4j配置。

第1步:创建一个文件src/test/resources/test-log4j.properties,其中包含测试的log4j配置。

实施例:

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类似如下:

<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> 

现在你的log4j.properties位于SRC /主/ web应用/ WEB-INF /类/

希望这会有所帮助。