summaryrefslogblamecommitdiffstats
path: root/docs/en/erlang.mk/1/guide/common_test/index.html
blob: 74e9c9124b2e8b87370500d60ed299fe0b27413c (plain) (tree)
1
2
3
4
5
6
7
8
9








                                                                                           
                                                 


                                          
                                                                                                                      
                                                   










































































                                                                                                                                                                                          
                                  







                                                                                            
                                  



                                                                                              












































































                                                                                                                                                                                             





                                          
                                                                                                                   




                                             
                                                                                                                       







                                                     





















































                                                                                                                                                                                                                           




                                         
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="description" content="">
    <meta name="author" content="Loïc Hoguin based on a design from (Soft10) Pol Cámara">

    <meta name="generator" content="Hugo 0.17" />

    <title>Nine Nines: Common Test</title>

    <link href='https://fonts.googleapis.com/css?family=Open+Sans:400,700,400italic' rel='stylesheet' type='text/css'>
    <link href="/css/99s.css?r=1" rel="stylesheet">

    <link rel="shortcut icon" href="/img/ico/favicon.ico">
    <link rel="apple-touch-icon-precomposed" sizes="114x114" href="/img/ico/apple-touch-icon-114.png">
    <link rel="apple-touch-icon-precomposed" sizes="72x72" href="/img/ico/apple-touch-icon-72.png">
    <link rel="apple-touch-icon-precomposed" href="/img/ico/apple-touch-icon-57.png">

    
</head>


<body class="">
  <header id="page-head">
    <div id="topbar" class="container">
        <div class="row">
          <div class="span2">
            <h1 id="logo"><a href="/" title="99s">99s</a></h1>
          </div>
          <div class="span10">
            
            <div id="side-header">
              <nav>
                <ul>
                  <li><a title="Hear my thoughts" href="/articles">Articles</a></li>
  				  <li><a title="Watch my talks" href="/talks">Talks</a></li>
  				  <li class="active"><a title="Read the docs" href="/docs">Documentation</a></li>
  				  <li><a title="Request my services" href="/services">Consulting & Training</a></li>
                </ul>
              </nav> 
              <ul id="social">
                <li>
                  <a href="https://github.com/ninenines" title="Check my Github repositories"><img src="/img/ico_github.png" data-hover="/img/ico_github_alt.png" alt="Github"></a>
                </li>
                    <li>
						<a title="Keep in touch!" href="http://twitter.com/lhoguin"><img src="/img/ico_microblog.png" data-hover="/img/ico_microblog_alt.png"></a>
					</li>
                    <li>
						<a title="Contact me" href="mailto:[email protected]"><img src="/img/ico_mail.png" data-hover="/img/ico_mail_alt.png"></a>
					</li>
              </ul>
            </div>
          </div>
        </div>
    </div>


</header>

<div id="contents" class="two_col">
<div class="container">
<div class="row">
<div id="docs" class="span9 maincol">

<h1 class="lined-header"><span>Common Test</span></h1>

<div class="paragraph"><p>Common Test is Erlang&#8217;s functional testing framework.
Erlang.mk automates the discovery and running of Common
Test suites.</p></div>
<div class="sect1">
<h2 id="_writing_tests">Writing tests</h2>
<div class="sectionbody">
<div class="paragraph"><p>The <a href="http://www.erlang.org/doc/apps/common_test/write_test_chapter.html">Common Test user guide</a>
is the best place to learn how to write tests. Erlang.mk
requires that file names for test suites end with <em>_SUITE.erl</em>
and that the files be located in the <em>$(TEST_DIR)</em> directory.
This defaults to <em>test/</em>.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_configuration">Configuration</h2>
<div class="sectionbody">
<div class="paragraph"><p>The <code>CT_OPTS</code> variable allows you to set extra Common Test
options. Options are documented in the
<a href="http://www.erlang.org/doc/apps/common_test/run_test_chapter.html">Common Test user guide</a>.
You can use it to set Common Test hooks, for example:</p></div>
<div class="listingblock">
<div class="content"></div></div>
<div class="paragraph"><p>The <code>CT_SUITES</code> variable can be used to override what
Common Test suites Erlang.mk will be aware of. It does
not normally need to be set as Erlang.mk will find the
test suites automatically.</p></div>
<div class="paragraph"><p>The name of the suite is the part before <code>_SUITE.erl</code>.
If the file is named <em>http_SUITE.erl</em>, the test suite
is <code>http</code>:</p></div>
<div class="listingblock">
<div class="content"></div></div>
<div class="paragraph"><p>The <code>CT_LOGS_DIR</code> variable can be used to set where HTML
log files are to be written. This defaults to <em>logs/</em>.</p></div>
<div class="listingblock">
<div class="content"></div></div>
</div>
</div>
<div class="sect1">
<h2 id="_usage">Usage</h2>
<div class="sectionbody">
<div class="paragraph"><p>To run all tests (including Common Test):</p></div>
<div class="listingblock">
<div class="content"><!-- Generator: GNU source-highlight 3.1.8
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
<pre><tt>$ make tests</tt></pre></div></div>
<div class="paragraph"><p>To run all tests and static checks (including Common Test):</p></div>
<div class="listingblock">
<div class="content"><!-- Generator: GNU source-highlight 3.1.8
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
<pre><tt>$ make check</tt></pre></div></div>
<div class="paragraph"><p>You can also run Common Test separately:</p></div>
<div class="listingblock">
<div class="content"><!-- Generator: GNU source-highlight 3.1.8
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
<pre><tt>$ make ct</tt></pre></div></div>
<div class="paragraph"><p>Erlang.mk will create targets for all test suites it finds.
If you have a file named <em>test/http_SUITE.erl</em>, then the
target <code>ct-http</code> will run that specific test suite:</p></div>
<div class="listingblock">
<div class="content"><!-- Generator: GNU source-highlight 3.1.8
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
<pre><tt>$ make ct-http</tt></pre></div></div>
<div class="paragraph"><p>Erlang.mk provides a convenient way to run a specific
group or a specific test case within a specific group,
using the variable <code>t</code>. Note that this only applies to
suite-specific targets, like the <code>ct-http</code> example above.</p></div>
<div class="paragraph"><p>To run all tests from the <code>http_compress</code> group in the
<code>http_SUITE</code> test suite, write:</p></div>
<div class="listingblock">
<div class="content"><!-- Generator: GNU source-highlight 3.1.8
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
<pre><tt>$ make ct-http <span style="color: #009900">t</span><span style="color: #990000">=</span>http_compress</tt></pre></div></div>
<div class="paragraph"><p>Similarly, to run a specific test case in that group:</p></div>
<div class="listingblock">
<div class="content"><!-- Generator: GNU source-highlight 3.1.8
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
<pre><tt>$ make ct-http <span style="color: #009900">t</span><span style="color: #990000">=</span>http_compress<span style="color: #990000">:</span>headers_dupe</tt></pre></div></div>
<div class="paragraph"><p>To do the same against a multi-application repository,
you can use the <code>-C</code> option:</p></div>
<div class="listingblock">
<div class="content"><!-- Generator: GNU source-highlight 3.1.8
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
<pre><tt>$ make -C apps/my_app ct-http <span style="color: #009900">t</span><span style="color: #990000">=</span>my_group<span style="color: #990000">:</span>my_case</tt></pre></div></div>
<div class="paragraph"><p>Note that this also applies to dependencies. When using Cowboy
as a dependency, you can run the following directly:</p></div>
<div class="listingblock">
<div class="content"><!-- Generator: GNU source-highlight 3.1.8
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
<pre><tt>$ make -C deps/cowboy ct-http <span style="color: #009900">t</span><span style="color: #990000">=</span>http_compress</tt></pre></div></div>
<div class="paragraph"><p>Finally, <a href="../coverage">code coverage</a> is available,
but covered in its own chapter.</p></div>
</div>
</div>



	
		
		

		<nav style="margin:1em 0">
			
				<a style="float:left" href="https://ninenines.eu/docs/en/erlang.mk/1/guide/eunit/">
					EUnit
				</a>
			

			
				<a style="float:right" href="https://ninenines.eu/docs/en/erlang.mk/1/guide/coverage/">
					Code coverage
				</a>
			
		</nav>
	



</div>

<div class="span3 sidecol">


<h3>
	Erlang.mk
	1
	
	User Guide
</h3>

<ul>
	
	
	
</ul>

<h4 id="docs-nav">Navigation</h4>

<h4>Version select</h4>
<ul>
	
	
	
		<li><a href="/docs/en/erlang.mk/1/guide">1</a></li>
	
</ul>

</div>
</div>
</div>
</div>

      <footer>
        <div class="container">
          <div class="row">
            <div class="span6">
              <p id="scroll-top"><a href="#">↑ Scroll to top</a></p>
              <nav>
                <ul>
                  <li><a href="mailto:[email protected]" title="Contact us">Contact us</a></li><li><a href="https://github.com/ninenines/ninenines.github.io" title="Github repository">Contribute to this site</a></li>
                </ul>
              </nav>
            </div>
            <div class="span6 credits">
               <p><img src="/img/footer_logo.png"></p>
               <p>Copyright &copy; Loïc Hoguin 2012-2016</p>
            </div>
          </div>
        </div>
      </footer>

    
    <script src="/js/custom.js"></script>
  </body>
</html>