Wie Sie sagen, wenn JUnit-Oberflächen, die nur mit einem TestWatcher?

Muss ich:

  • Uhr die tests
  • Informationen zu sammeln, die
  • einen Bericht erstellen, aus der die tests

Werden die tests gestartet werden, über TeamCity. Ich erstelle ein TestWatcher Objekt zu hören, für test-Ergebnisse, und dies TestWatcher ist in jedem der JUnit-Klasse, die tests enthält. Ich hatte ein Zuhörer, die hören würde, wenn die gesamte suite ist fertig, aber ich musste hinzufügen, dass programmgesteuert. Da bin ich jetzt mit TeamCity zum ausführen der tests und Ergebnisse erzielen, ich glaube, ich habe verloren, die Fähigkeit. Ich wurde gebeten, zu produzieren auch ein PDF-Bericht mit der TeamCity Ergebnisse. Alles was ich brauche zu wissen, ist, wenn die tests fertig sind, so kann ich wissen, Wann Sie anfangen den Aufbau meines Berichts. Gibt es trotzdem, um dies zu erreichen, die nur mit einem TestWatcher?

Unten ist das, was meine TestWatcher aussieht wie im moment. BaseTestResult nur eine Klasse enthält, die Ergebnisse der tests, und ordnet Sie in der Reihenfolge ausdrucken zu erleichtern. Ich bin auch mit Selen, und die Treiber-variable ist vom Typ WebDriver:

@Rule
public TestWatcher watchman = new TestWatcher() {
    private BaseTestResult currentTest;
    private long startTime;
    private long endTime;

    @Override
    protected void starting(Description d) {
        startTime = System.currentTimeMillis();
        currentTest = new BaseTestResult(d);
        currentTest.setBrowser(type);
        if (d.getAnnotation(TestDescription.class) != null) {
            currentTest.setDescription(d.getAnnotation(
                    TestDescription.class).description());
        }
        currentTest.setSuite(d.getTestClass().getName());
    }

    @Override
    protected void succeeded(Description d) {
        currentTest.setSucceeded(true);
    }

    @Override
    protected void failed(Throwable e, Description d) {
        currentTest.setThrowable(e);
    }

    @Override
    protected void finished(Description d) {
        endTime = System.currentTimeMillis();
        currentTest.setRuntime(endTime - startTime);
        String fileName = d.getMethodName() + type + ".png";
        File srcFile = ((TakesScreenshot) driver)
                .getScreenshotAs(OutputType.FILE);
        String filePath = "./screens/" + fileName;
        try {
            FileUtils.copyFile(srcFile, new File(filePath));
            currentTest.setScreenshotPath(filePath);
        } catch (IOException e) {
            log.severe(e.toString());
        }

        if (currentTest.getSucceeded()) {
            BaseListener.getSuiteResult().addPassed(currentTest);
        } else {
            BaseListener.getSuiteResult().addFailed(currentTest);
        }

        //Quit, the web driver
        if (driver != null) {
            driver.quit();
        }
    }

};

InformationsquelleAutor Reid Mac | 2012-03-30

Schreibe einen Kommentar