JUnitLikeTestReporter.java

net.minecraft.gametest.framework.JUnitLikeTestReporter

信息

  • 全限定名:net.minecraft.gametest.framework.JUnitLikeTestReporter
  • 类型:public class
  • 包:net.minecraft.gametest.framework
  • 源码路径:src/main/java/net/minecraft/gametest/framework/JUnitLikeTestReporter.java
  • 起始行号:L18
  • 实现:TestReporter
  • 职责:

    TODO

字段/常量

  • document

    • 类型: Document
    • 修饰符: private final
    • 源码定位: L19
    • 说明:

      TODO

  • testSuite

    • 类型: Element
    • 修饰符: private final
    • 源码定位: L20
    • 说明:

      TODO

  • stopwatch

    • 类型: Stopwatch
    • 修饰符: private final
    • 源码定位: L21
    • 说明:

      TODO

  • destination

    • 类型: File
    • 修饰符: private final
    • 源码定位: L22
    • 说明:

      TODO

内部类/嵌套类型

构造器

public JUnitLikeTestReporter(File destination) @ L24

  • 构造器名:JUnitLikeTestReporter
  • 源码定位:L24
  • 修饰符:public

参数:

  • destination: File

说明:

TODO

方法

下面的方法块按源码顺序生成。

private Element createTestCase(GameTestInfo testInfo, String name) @ L35

  • 方法名:createTestCase
  • 源码定位:L35
  • 返回类型:Element
  • 修饰符:private

参数:

  • testInfo: GameTestInfo
  • name: String

说明:

TODO

public void onTestFailed(GameTestInfo testInfo) @ L44

  • 方法名:onTestFailed
  • 源码定位:L44
  • 返回类型:void
  • 修饰符:public

参数:

  • testInfo: GameTestInfo

说明:

TODO

public void onTestSuccess(GameTestInfo testInfo) @ L54

  • 方法名:onTestSuccess
  • 源码定位:L54
  • 返回类型:void
  • 修饰符:public

参数:

  • testInfo: GameTestInfo

说明:

TODO

public void finish() @ L60

  • 方法名:finish
  • 源码定位:L60
  • 返回类型:void
  • 修饰符:public

参数:

说明:

TODO

public void save(File file) @ L72

  • 方法名:save
  • 源码定位:L72
  • 返回类型:void
  • 修饰符:public

参数:

  • file: File

说明:

TODO

代码

public class JUnitLikeTestReporter implements TestReporter {
    private final Document document;
    private final Element testSuite;
    private final Stopwatch stopwatch;
    private final File destination;
 
    public JUnitLikeTestReporter(File destination) throws ParserConfigurationException {
        this.destination = destination;
        this.document = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
        this.testSuite = this.document.createElement("testsuite");
        Element testSuites = this.document.createElement("testsuite");
        testSuites.appendChild(this.testSuite);
        this.document.appendChild(testSuites);
        this.testSuite.setAttribute("timestamp", DateTimeFormatter.ISO_INSTANT.format(Instant.now()));
        this.stopwatch = Stopwatch.createStarted();
    }
 
    private Element createTestCase(GameTestInfo testInfo, String name) {
        Element testCase = this.document.createElement("testcase");
        testCase.setAttribute("name", name);
        testCase.setAttribute("classname", testInfo.getStructure().toString());
        testCase.setAttribute("time", String.valueOf(testInfo.getRunTime() / 1000.0));
        this.testSuite.appendChild(testCase);
        return testCase;
    }
 
    @Override
    public void onTestFailed(GameTestInfo testInfo) {
        String name = testInfo.id().toString();
        String message = testInfo.getError().getMessage();
        Element result = this.document.createElement(testInfo.isRequired() ? "failure" : "skipped");
        result.setAttribute("message", "(" + testInfo.getTestBlockPos().toShortString() + ") " + message);
        Element testCase = this.createTestCase(testInfo, name);
        testCase.appendChild(result);
    }
 
    @Override
    public void onTestSuccess(GameTestInfo testInfo) {
        String name = testInfo.id().toString();
        this.createTestCase(testInfo, name);
    }
 
    @Override
    public void finish() {
        this.stopwatch.stop();
        this.testSuite.setAttribute("time", String.valueOf(this.stopwatch.elapsed(TimeUnit.MILLISECONDS) / 1000.0));
 
        try {
            this.save(this.destination);
        } catch (TransformerException var2) {
            throw new Error("Couldn't save test report", var2);
        }
    }
 
    public void save(File file) throws TransformerException {
        TransformerFactory transformerFactory = TransformerFactory.newInstance();
        Transformer transformer = transformerFactory.newTransformer();
        DOMSource source = new DOMSource(this.document);
        StreamResult result = new StreamResult(file);
        transformer.transform(source, result);
    }
}

引用的其他类