<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia Site Renderer 1.11.1 from org.apache.maven.plugins:maven-surefire-report-plugin:2.22.2:report at 2023-01-28

 | Rendered using Apache Maven Default Skin
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta name="generator" content="Apache Maven Doxia Site Renderer 1.11.1" />
    <title>Apache Whisker::Plugin4Maven &#x2013; Surefire Report</title>
    <link rel="stylesheet" href="./css/maven-base.css" />
    <link rel="stylesheet" href="./css/maven-theme.css" />
    <link rel="stylesheet" href="./css/site.css" />
    <link rel="stylesheet" href="./css/print.css" media="print" />
<link href="https://fonts.googleapis.com/css?family=Mate+SC" type="text/css" rel="stylesheet" />
  </head>
  <body class="composite">
    <div id="banner">
<div id="bannerLeft">Apache Whisker::Maven Plugin
</div>
<a href="https://www.apache.org/" id="bannerRight"><img src="https://www.apache.org/images/asf_logo_wide.jpg"  alt="The Apache Software Foundation" title="The Apache Software Foundation"/></a>      <div class="clear">
        <hr/>
      </div>
    </div>
    <div id="breadcrumbs">
      <div class="xleft">
        <span id="publishDate">Last Published: 2023-01-28</span>
           | <span id="projectVersion">Version: 0.2-SNAPSHOT</span>
          | <a href="https://www.apache.org/" class="externalLink" title="Apache">Apache</a> &gt;
<a href="https://creadur.apache.org/" class="externalLink" title="Creadur">Creadur</a> &gt;
<a href="https://creadur.apache.org/whisker/" class="externalLink" title="Whisker">Whisker</a> &gt;
<a href="index.html" title="Apache Whisker::Plugin4Maven">Apache Whisker::Plugin4Maven</a> &gt;
Surefire Report
      </div>
      <div class="xright">      </div>
      <div class="clear">
        <hr/>
      </div>
    </div>
    <div id="leftColumn">
      <div id="navcolumn">
       <h5>Overview</h5>
    <ul>
     <li class="none"><a href="index.html" title="Introduction">Introduction</a></li>
     <li class="none"><a href="plugin-info.html" title="Goals">Goals</a></li>
     <li class="none"><a href="usage.html" title="Usage">Usage</a></li>
     <li class="none"><a href="faq.html" title="FAQ">FAQ</a></li>
    </ul>
       <h5>Examples</h5>
    <ul>
     <li class="none"><a href="examples/generation-in-5-mins.html" title="In 5 Minutes">In 5 Minutes</a></li>
    </ul>
       <h5>Parent Project</h5>
    <ul>
     <li class="none"><a href="../index.html" title="Apache Whisker">Apache Whisker</a></li>
    </ul>
       <h5>Project Documentation</h5>
    <ul>
     <li class="collapsed"><a href="project-info.html" title="Project Information">Project Information</a></li>
     <li class="expanded"><a href="project-reports.html" title="Project Reports">Project Reports</a>
      <ul>
       <li class="none"><a href="rat-report.html" title="Rat Report">Rat Report</a></li>
       <li class="none"><a href="checkstyle.html" title="Checkstyle">Checkstyle</a></li>
       <li class="none"><a href="apidocs/index.html" title="Javadoc">Javadoc</a></li>
       <li class="none"><a href="testapidocs/index.html" title="Test Javadoc">Test Javadoc</a></li>
       <li class="none"><a href="xref/index.html" title="Source Xref">Source Xref</a></li>
       <li class="none"><a href="xref-test/index.html" title="Test Source Xref">Test Source Xref</a></li>
       <li class="none"><strong>Surefire Report</strong></li>
       <li class="none"><a href="cpd.html" title="CPD">CPD</a></li>
       <li class="none"><a href="pmd.html" title="PMD">PMD</a></li>
       <li class="none"><a href="jdepend-report.html" title="JDepend">JDepend</a></li>
       <li class="none"><a href="taglist.html" title="Tag List">Tag List</a></li>
       <li class="none"><a href="findbugs.html" title="FindBugs">FindBugs</a></li>
      </ul></li>
    </ul>
       <h5>Apache Whisker&trade;</h5>
    <ul>
     <li class="none"><a href="../index.html" title="Introducing Whisker">Introducing Whisker</a></li>
     <li class="none"><a href="../meta-data.html" title="Meta Data">Meta Data</a></li>
     <li class="none"><a href="../apache-whisker-maven-plugin/index.html" title="Maven Plugin">Maven Plugin</a></li>
     <li class="none"><a href="../apache-whisker-cli/index.html" title="Command Line">Command Line</a></li>
     <li class="none"><a href="../apidocs/index.html" title="Javadocs">Javadocs</a></li>
     <li class="none"><a href="../xref/index.html" title="Source Cross-ref">Source Cross-ref</a></li>
     <li class="none"><a href="../faq.html" title="FAQ">FAQ</a></li>
    </ul>
       <h5>Apache Creadur &trade;</h5>
    <ul>
     <li class="none"><a href="https://creadur.apache.org" class="externalLink" title="Creadur Project Home">Creadur Project Home</a></li>
     <li class="none"><a href="https://creadur.apache.org/rat" class="externalLink" title="Apache Rat">Apache Rat</a></li>
     <li class="none"><a href="https://creadur.apache.org/tentacles" class="externalLink" title="Apache Tentacles">Apache Tentacles</a></li>
     <li class="none"><a href="https://www.apache.org/security/" class="externalLink" title="Security">Security</a></li>
     <li class="none"><a href="https://www.apache.org/licenses/" class="externalLink" title="License">License</a></li>
     <li class="none"><a href="https://www.apache.org/foundation/sponsorship.html" class="externalLink" title="Sponsorship">Sponsorship</a></li>
     <li class="none"><a href="https://www.apache.org/foundation/thanks.html" class="externalLink" title="Thanks">Thanks</a></li>
    </ul>
       <h5>The Apache Software Foundation</h5>
    <ul>
     <li class="none"><a href="https://www.apache.org/foundation" class="externalLink" title="About the Foundation">About the Foundation</a></li>
     <li class="none"><a href="https://projects.apache.org" class="externalLink" title="The projects">The projects</a></li>
     <li class="none"><a href="https://people.apache.org" class="externalLink" title="The people">The people</a></li>
     <li class="none"><a href="https://www.apache.org/foundation/how-it-works.html" class="externalLink" title="How we work">How we work</a></li>
     <li class="none"><a href="https://www.apache.org/foundation/how-it-works.html#history" class="externalLink" title="Our history">Our history</a></li>
     <li class="none"><a href="https://blogs.apache.org/foundation/" class="externalLink" title="News">News</a></li>
    </ul>
       <h5>Contribute</h5>
    <ul>
     <li class="none"><a href="https://www.apache.org/foundation/getinvolved.html" class="externalLink" title="Get Involved">Get Involved</a></li>
    </ul>
       <h5>Committer Info</h5>
    <ul>
     <li class="none"><a href="https://www.apache.org/dev/committers.html" class="externalLink" title="Committers' FAQ">Committers' FAQ</a></li>
     <li class="none"><a href="https://www.apache.org/dev/new-committers-guide.html" class="externalLink" title="New Committers Guide">New Committers Guide</a></li>
     <li class="none"><a href="https://planet.apache.org/committers/" class="externalLink" title="Planet Apache">Planet Apache</a></li>
     <li class="none"><a href="https://community.apache.org/" class="externalLink" title="Community">Community</a></li>
     <li class="none"><a href="https://www.apache.org/legal/" class="externalLink" title="Legal">Legal</a></li>
     <li class="none"><a href="https://www.apache.org/foundation/marks/" class="externalLink" title="Branding">Branding</a></li>
     <li class="none"><a href="https://www.apache.org/press/" class="externalLink" title="Media Relations">Media Relations</a></li>
    </ul>
      <a href="https://maven.apache.org/" title="Maven" class="poweredBy">
        <img class="poweredBy"  alt="Maven" src="https://maven.apache.org/images/logos/maven-feather.png"     />
      </a>
      </div>
    </div>
    <div id="bodyColumn">
      <div id="contentBox">
<script type="application/javascript">
//<![CDATA[
function toggleDisplay(elementId) {
 var elm = document.getElementById(elementId + '-error');
 if (elm == null) {
  elm = document.getElementById(elementId + '-failure');
 }
 if (elm && typeof elm.style != "undefined") {
  if (elm.style.display == "none") {
   elm.style.display = "";
   document.getElementById(elementId + '-off').style.display = "none";
   document.getElementById(elementId + '-on').style.display = "inline";
  } else if (elm.style.display == "") {   elm.style.display = "none";
   document.getElementById(elementId + '-off').style.display = "inline";
   document.getElementById(elementId + '-on').style.display = "none";
  } 
 } 
 }
//]]>
</script><section>
<h2><a name="Surefire_Report"></a>Surefire Report</h2></section><section>
<h2><a name="Summary"></a>Summary</h2><a name="Summary"></a>
<p>[<a href="#Summary">Summary</a>] [<a href="#Package_List">Package List</a>] [<a href="#Test_Cases">Test Cases</a>]</p><br />
<table border="1" class="bodyTable">
<tr class="a">
<th>Tests</th>
<th>Errors</th>
<th>Failures</th>
<th>Skipped</th>
<th>Success Rate</th>
<th>Time</th></tr>
<tr class="b">
<td align="left">16</td>
<td align="left">0</td>
<td align="left">0</td>
<td align="left">0</td>
<td align="left">100%</td>
<td align="left">0.037</td></tr></table><br />
<p>Note: failures are anticipated and checked for with assertions while errors are unanticipated.</p><br /></section><section>
<h2><a name="Package_List"></a>Package List</h2><a name="Package_List"></a>
<p>[<a href="#Summary">Summary</a>] [<a href="#Package_List">Package List</a>] [<a href="#Test_Cases">Test Cases</a>]</p><br />
<table border="1" class="bodyTable">
<tr class="a">
<th>Package</th>
<th>Tests</th>
<th>Errors</th>
<th>Failures</th>
<th>Skipped</th>
<th>Success Rate</th>
<th>Time</th></tr>
<tr class="b">
<td align="left"><a href="#org.apache.creadur.whisker.it">org.apache.creadur.whisker.it</a></td>
<td align="left">16</td>
<td align="left">0</td>
<td align="left">0</td>
<td align="left">0</td>
<td align="left">100%</td>
<td align="left">0.037</td></tr></table><br />
<p>Note: package statistics are not computed recursively, they only sum up all of its testsuites numbers.</p><section>
<h3><a name="org.apache.creadur.whisker.it"></a>org.apache.creadur.whisker.it</h3><a name="org.apache.creadur.whisker.it"></a>
<table border="1" class="bodyTable">
<tr class="a">
<th></th>
<th>Class</th>
<th>Tests</th>
<th>Errors</th>
<th>Failures</th>
<th>Skipped</th>
<th>Success Rate</th>
<th>Time</th></tr>
<tr class="b">
<td align="left"><a href="#org.apache.creadur.whisker.it.TestAnyCheck"><figure><img src="images/icon_success_sml.gif" alt="" /></figure></a></td>
<td align="left"><a href="#org.apache.creadur.whisker.it.TestAnyCheck">TestAnyCheck</a></td>
<td align="left">6</td>
<td align="left">0</td>
<td align="left">0</td>
<td align="left">0</td>
<td align="left">100%</td>
<td align="left">0.003</td></tr>
<tr class="a">
<td align="left"><a href="#org.apache.creadur.whisker.it.TestNoLineContainsCheck"><figure><img src="images/icon_success_sml.gif" alt="" /></figure></a></td>
<td align="left"><a href="#org.apache.creadur.whisker.it.TestNoLineContainsCheck">TestNoLineContainsCheck</a></td>
<td align="left">4</td>
<td align="left">0</td>
<td align="left">0</td>
<td align="left">0</td>
<td align="left">100%</td>
<td align="left">0.002</td></tr>
<tr class="b">
<td align="left"><a href="#org.apache.creadur.whisker.it.TestAllCheck"><figure><img src="images/icon_success_sml.gif" alt="" /></figure></a></td>
<td align="left"><a href="#org.apache.creadur.whisker.it.TestAllCheck">TestAllCheck</a></td>
<td align="left">6</td>
<td align="left">0</td>
<td align="left">0</td>
<td align="left">0</td>
<td align="left">100%</td>
<td align="left">0.032</td></tr></table></section><br /></section><section>
<h2><a name="Test_Cases"></a>Test Cases</h2><a name="Test_Cases"></a>
<p>[<a href="#Summary">Summary</a>] [<a href="#Package_List">Package List</a>] [<a href="#Test_Cases">Test Cases</a>]</p><section>
<h3><a name="TestAnyCheck"></a>TestAnyCheck</h3><a name="org.apache.creadur.whisker.it.TestAnyCheck"></a>
<table border="1" class="bodyTable">
<tr class="a">
<td align="left"><figure><img src="images/icon_success_sml.gif" alt="" /></figure></td>
<td align="left"><a name="TC_org.apache.creadur.whisker.it.TestAnyCheck.testTwoChecksFail"></a>testTwoChecksFail</td>
<td align="left">0.001</td></tr>
<tr class="b">
<td align="left"><figure><img src="images/icon_success_sml.gif" alt="" /></figure></td>
<td align="left"><a name="TC_org.apache.creadur.whisker.it.TestAnyCheck.testTwoChecksPass"></a>testTwoChecksPass</td>
<td align="left">0</td></tr>
<tr class="a">
<td align="left"><figure><img src="images/icon_success_sml.gif" alt="" /></figure></td>
<td align="left"><a name="TC_org.apache.creadur.whisker.it.TestAnyCheck.testTwoChecksPassWhenOneMatchFails"></a>testTwoChecksPassWhenOneMatchFails</td>
<td align="left">0</td></tr>
<tr class="b">
<td align="left"><figure><img src="images/icon_success_sml.gif" alt="" /></figure></td>
<td align="left"><a name="TC_org.apache.creadur.whisker.it.TestAnyCheck.testNoChecksPass"></a>testNoChecksPass</td>
<td align="left">0</td></tr>
<tr class="a">
<td align="left"><figure><img src="images/icon_success_sml.gif" alt="" /></figure></td>
<td align="left"><a name="TC_org.apache.creadur.whisker.it.TestAnyCheck.testOneCheckFail"></a>testOneCheckFail</td>
<td align="left">0.001</td></tr>
<tr class="b">
<td align="left"><figure><img src="images/icon_success_sml.gif" alt="" /></figure></td>
<td align="left"><a name="TC_org.apache.creadur.whisker.it.TestAnyCheck.testOneCheckPass"></a>testOneCheckPass</td>
<td align="left">0</td></tr></table></section><section>
<h3><a name="TestNoLineContainsCheck"></a>TestNoLineContainsCheck</h3><a name="org.apache.creadur.whisker.it.TestNoLineContainsCheck"></a>
<table border="1" class="bodyTable">
<tr class="a">
<td align="left"><figure><img src="images/icon_success_sml.gif" alt="" /></figure></td>
<td align="left"><a name="TC_org.apache.creadur.whisker.it.TestNoLineContainsCheck.testSameLine"></a>testSameLine</td>
<td align="left">0</td></tr>
<tr class="b">
<td align="left"><figure><img src="images/icon_success_sml.gif" alt="" /></figure></td>
<td align="left"><a name="TC_org.apache.creadur.whisker.it.TestNoLineContainsCheck.testNullLine"></a>testNullLine</td>
<td align="left">0</td></tr>
<tr class="a">
<td align="left"><figure><img src="images/icon_success_sml.gif" alt="" /></figure></td>
<td align="left"><a name="TC_org.apache.creadur.whisker.it.TestNoLineContainsCheck.testLineContainingText"></a>testLineContainingText</td>
<td align="left">0</td></tr>
<tr class="b">
<td align="left"><figure><img src="images/icon_success_sml.gif" alt="" /></figure></td>
<td align="left"><a name="TC_org.apache.creadur.whisker.it.TestNoLineContainsCheck.testDifferentLine"></a>testDifferentLine</td>
<td align="left">0.001</td></tr></table></section><section>
<h3><a name="TestAllCheck"></a>TestAllCheck</h3><a name="org.apache.creadur.whisker.it.TestAllCheck"></a>
<table border="1" class="bodyTable">
<tr class="a">
<td align="left"><figure><img src="images/icon_success_sml.gif" alt="" /></figure></td>
<td align="left"><a name="TC_org.apache.creadur.whisker.it.TestAllCheck.testTwoChecksFail"></a>testTwoChecksFail</td>
<td align="left">0.012</td></tr>
<tr class="b">
<td align="left"><figure><img src="images/icon_success_sml.gif" alt="" /></figure></td>
<td align="left"><a name="TC_org.apache.creadur.whisker.it.TestAllCheck.testTwoChecksPass"></a>testTwoChecksPass</td>
<td align="left">0</td></tr>
<tr class="a">
<td align="left"><figure><img src="images/icon_success_sml.gif" alt="" /></figure></td>
<td align="left"><a name="TC_org.apache.creadur.whisker.it.TestAllCheck.testTwoChecksWhenOneMatchFailsAllFail"></a>testTwoChecksWhenOneMatchFailsAllFail</td>
<td align="left">0.001</td></tr>
<tr class="b">
<td align="left"><figure><img src="images/icon_success_sml.gif" alt="" /></figure></td>
<td align="left"><a name="TC_org.apache.creadur.whisker.it.TestAllCheck.testNoChecksPass"></a>testNoChecksPass</td>
<td align="left">0</td></tr>
<tr class="a">
<td align="left"><figure><img src="images/icon_success_sml.gif" alt="" /></figure></td>
<td align="left"><a name="TC_org.apache.creadur.whisker.it.TestAllCheck.testOneCheckFail"></a>testOneCheckFail</td>
<td align="left">0</td></tr>
<tr class="b">
<td align="left"><figure><img src="images/icon_success_sml.gif" alt="" /></figure></td>
<td align="left"><a name="TC_org.apache.creadur.whisker.it.TestAllCheck.testOneCheckPass"></a>testOneCheckPass</td>
<td align="left">0</td></tr></table></section><br /></section>
      </div>
    </div>
    <div class="clear">
      <hr/>
    </div>
    <div id="footer">
      <div class="xright">
        Copyright © 2012-2023 The Apache Software Foundation, Licensed under the Apache License, Version 2.0.
      Apache Creadur, Creadur, Apache Rat, Apache Tentacles, Apache Whisker, Apache and the Apache feather logo are trademarks
      of The Apache Software Foundation.
      All other marks mentioned may be trademarks or registered trademarks of their respective owners.
      This is user documentation, not legal advice.
      </div>
      <div class="clear">
        <hr/>
      </div>
    </div>
  </body>
</html>
