How can I generate an HTML report for Junit results?

前端 未结 7 1390
囚心锁ツ
囚心锁ツ 2020-11-27 02:57

Is there a way to (easily) generate a HTML report that contains the tests results ? I am currently using JUnit in addition to Selenium for testing web apps UI.

PS: G

相关标签:
7条回答
  • 2020-11-27 03:04

    Alternatively for those using Maven build tool, there is a plugin called Surefire Report.

    The report looks like this : Sample

    0 讨论(0)
  • 2020-11-27 03:05

    I found the above answers quite useful but not really general purpose, they all need some other major build system like Ant or Maven.

    I wanted to generate a report in a simple one-shot command that I could call from anything (from a build, test or just myself) so I have created junit2html which can be found here: https://github.com/inorton/junit2html

    You can install it by doing:

    pip install junit2html
    
    0 讨论(0)
  • 2020-11-27 03:05

    I found xunit-viewer, which has deprecated junit-viewer mentioned by @daniel-kristof-kiss.

    It is very simple, automatically recursively collects all relevant files in ANT Junit XML format and creates a single html-file with filtering and other sweet features.

    I use it to upload test results from Travis builds as Travis has no other support for collecting standard formatted test results output.

    0 讨论(0)
  • 2020-11-27 03:10

    Junit xml format is used outside of Java/Maven/Ant word. Jenkins with http://wiki.jenkins-ci.org/display/JENKINS/xUnit+Plugin is a solution.

    For the one shot solution I have found this tool that does the job: https://www.npmjs.com/package/junit-viewer

    junit-viewer --results=surefire-reports --save=file_location.html

    --results= is directory with xml files (test reports)

    0 讨论(0)
  • 2020-11-27 03:11

    There are multiple options available for generating HTML reports for Selenium WebDriver scripts.

    1. Use the JUNIT TestWatcher class for creating your own Selenium HTML reports

    The TestWatcher JUNIT class allows overriding the failed() and succeeded() JUNIT methods that are called automatically when JUNIT tests fail or pass.

    The TestWatcher JUNIT class allows overriding the following methods:

    • protected void failed(Throwable e, Description description)

    failed() method is invoked when a test fails

    • protected void finished(Description description)

    finished() method is invoked when a test method finishes (whether passing or failing)

    • protected void skipped(AssumptionViolatedException e, Description description)

    skipped() method is invoked when a test is skipped due to a failed assumption.

    • protected void starting(Description description)

    starting() method is invoked when a test is about to start

    • protected void succeeded(Description description)

    succeeded() method is invoked when a test succeeds

    See below sample code for this case:

    import static org.junit.Assert.assertTrue;
    import org.junit.Test;
    
    public class TestClass2 extends WatchManClassConsole {
    
        @Test public void testScript1() {
            assertTrue(1 < 2); >
        }
    
        @Test public void testScript2() {
            assertTrue(1 > 2);
        }
    
        @Test public void testScript3() {
            assertTrue(1 < 2);
        }
    
        @Test public void testScript4() {
            assertTrue(1 > 2);
        }
    }
    

    import org.junit.Rule; 
    import org.junit.rules.TestRule; 
    import org.junit.rules.TestWatcher; 
    import org.junit.runner.Description; 
    import org.junit.runners.model.Statement; 
    
    public class WatchManClassConsole {
    
        @Rule public TestRule watchman = new TestWatcher() { 
    
            @Override public Statement apply(Statement base, Description description) { 
                return super.apply(base, description); 
            } 
    
            @Override protected void succeeded(Description description) { 
                System.out.println(description.getDisplayName() + " " + "success!"); 
            } 
    
            @Override protected void failed(Throwable e, Description description) { 
                System.out.println(description.getDisplayName() + " " + e.getClass().getSimpleName()); 
            }
        }; 
    }
    

    2. Use the Allure Reporting framework

    Allure framework can help with generating HTML reports for your Selenium WebDriver projects.

    The reporting framework is very flexible and it works with many programming languages and unit testing frameworks.

    You can read everything about it at http://allure.qatools.ru/.

    You will need the following dependencies and plugins to be added to your pom.xml file

    1. maven surefire
    2. aspectjweaver
    3. allure adapter

    See more details including code samples on this article: http://test-able.blogspot.com/2015/10/create-selenium-html-reports-with-allure-framework.html

    0 讨论(0)
  • 2020-11-27 03:14

    You can easily do this via ant. Here is a build.xml file for doing this

     <project name="genTestReport" default="gen" basedir=".">
            <description>
                    Generate the HTML report from JUnit XML files
            </description>
    
            <target name="gen">
                    <property name="genReportDir" location="${basedir}/unitTestReports"/>
                    <delete dir="${genReportDir}"/>
                    <mkdir dir="${genReportDir}"/>
                    <junitreport todir="${basedir}/unitTestReports">
                            <fileset dir="${basedir}">
                                    <include name="**/TEST-*.xml"/>
                            </fileset>
                            <report format="frames" todir="${genReportDir}/html"/>
                    </junitreport>
            </target>
    </project>
    

    This will find files with the format TEST-*.xml and generate reports into a folder named unitTestReports.

    To run this (assuming the above file is called buildTestReports.xml) run the following command in the terminal:

    ant -buildfile buildTestReports.xml
    
    0 讨论(0)
提交回复
热议问题