Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将JUnit测试结果记录到文件中?_Java_Junit - Fatal编程技术网

Java 如何将JUnit测试结果记录到文件中?

Java 如何将JUnit测试结果记录到文件中?,java,junit,Java,Junit,我以前从未使用过日志记录机制,但现在我需要将JUnit测试的结果记录到一个文件中 我想将下面测试的结果(无论是通过、失败还是抛出异常)记录到日志文件中 @Test public void statusCode200() { Assert.assertEquals("Java class".getStatusCode(), 200); } 有人能告诉我如何做到这一点吗 从评论中: 我目前正在使用这个日志机制:–22分钟前的金妮·辛格 fileHandler = new FileHand

我以前从未使用过日志记录机制,但现在我需要将JUnit测试的结果记录到一个文件中

我想将下面测试的结果(无论是通过、失败还是抛出异常)记录到日志文件中

@Test
public void statusCode200() {
    Assert.assertEquals("Java class".getStatusCode(), 200);
}
有人能告诉我如何做到这一点吗


从评论中:

我目前正在使用这个日志机制:–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();
您可以使用
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");
    }
}

为什么要这样做?我知道console会记录所有内容,但我想保存结果以备将来使用。此外,如果关闭日志,您最终会丢失所有与日志文件不同的内容,为什么不使用Log4j或Logback之类的日志框架呢?您可以导出测试报告。所以你以后可以查看测试结果。首先,感谢回复。