2015-06-16 4 views
2

Я никогда раньше не использовал механизм регистрации, но теперь у меня есть требование регистрировать результаты моих тестов JUnit в файле.Как регистрировать результаты теста JUnit в файл?

Я хочу зарегистрировать результат теста ниже (как пропуск, отказ или исключение исключения) в файл журнала.

@Test 
public void statusCode200() { 
    Assert.assertEquals("Java class".getStatusCode(), 200); 
} 

Может кто-нибудь посоветуйте, как это достичь?


Из комментариев:

Я в настоящее время используют этот механизм протоколирования: - Ginny Singh 22 минут назад

fileHandler = new FileHandler(System.getProperty("user.dir")+"//ExecutionResults.log"); 
simpleFormatter = new SimpleFormatter(); 
StreamHandler sh = new StreamHandler(System.out, simpleFormatter); 
log.setUseParentHandlers(false); 
log.addHandler(sh); 
log.addHandler(fileHandler); 
fileHandler.setFormatter(simpleFormatter); 
fileHandler.setLevel(Level.ALL); 
log.setLevel(Level.ALL); 
log.config("Logger Configuration done."); 
fileHandler.close(); 
+1

Зачем вам это нужно? –

+0

Мне известно, что консоль регистрирует все, но я хочу сохранить результаты позже. Кроме того, если вы закрываете журнал, вы потеряли все, что в отличие от файла журнала –

+1

Почему бы вам просто не использовать систему ведения журнала, такую ​​как Log4j или Logback? – JNYRanger

ответ

0

Вы можете использовать TestWatcher правило из JUnit библиотеки

import org.junit.AfterClass; 
import org.junit.Assert; 
import org.junit.Rule; 
import org.junit.Test; 
import org.junit.rules.TestWatcher; 
import org.junit.runner.Description; 

import java.io.IOException; 
import java.io.PrintWriter; 

public class LogJunitTests { 
    private static StringBuilder builder = new StringBuilder(); 
    @AfterClass 
    public static void afterClass() throws IOException { 
     PrintWriter logFile = new PrintWriter("You Log Path", "UTF-8"); 
     logFile.write(builder.toString()); 
     logFile.close(); 
    } 

    @Rule 
    public TestWatcher watchman = new TestWatcher() { 

     @Override 
     protected void failed(Throwable e, Description description) { 
      if (description != null) { 
       builder.append(description); 
      } 
      if (e != null) { 
       builder.append(' '); 
       builder.append(e); 
      } 
      builder.append(" FAIL\n"); 
     } 

     @Override 
     protected void succeeded(Description description) { 
      if (description != null) { 
       builder.append(description); 
      } 
      builder.append(" OK\n"); 
     } 
    }; 

    @Test 
    public void test() { 
     Assert.assertEquals("Java class", "Java class"); 
    } 
} 
Смежные вопросы