<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">

<html>
    <head>
        <title>Video of Using TestNG in NetBeans IDE</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" >
        <meta name="description" content="Video of creating and debugging a TestNG test class in NetBeans IDE">
        <link rel="stylesheet" type="text/css" href="../../../netbeans.css">
    </head>
    <body>

<!--
Copyright (c) 2009, 2010, 2011, 2012, Oracle and/or its affiliates. All rights reserved.
-->

        <h1>Video of Using TestNG in NetBeans IDE</h1>

        <table>
            <tr>
                <td class="valign-top">

                    <p>This screencast demonstrates how to create and debug a TestNG test class in NetBeans IDE. 
                        In the screencast you create a simple TestNG test and create a data provider in 
                        the test class to supply the parameters used in the test.
                        The screencast also demonstrates using the 
                        Step Over Expression command when debugging the test class.
                    </p>

                    <p>Author: Ken Ganfield <br>
                      Time: 5:20</p>

                    <p><a href="http://bits.netbeans.org/media/testng-screencast.mp4">Watch full size/Download</a> (.mp4)
                        (Ctrl-Click to download, 31 MB)</p>


                    <br style="clear:both;">
                    <div class="feedback-box">
                        <a href="/about/contact_form.html?to=3&amp;subject=Feedback:%20Video%20of%20Using%20TestNG%20in%20NetBeans%20IDE">Send Feedback on This Tutorial</a>
                    </div>
                    <br style="clear:both;">
              </td>
              
              <td width="5">&nbsp; </td>
      <td class="valign-top" width="486">
   <script src="/images_www/js/mediaplayer-5.9/jwplayer.js" type="text/javascript"></script>
    <div id="player" >
        <center>
	    <div id="flashContent"></div>
        </center>
    </div>
    <script type="text/javascript">
	$(function(){
	    var targetFile='http://bits.netbeans.org/media/testng-screencast.mp4';
            jwplayer('flashContent').setup({
	                'id': 'flashContentId',
	                'width': '530',
	                'height': '340',
	                'autostart': 'true',
	                'file': targetFile,
	                'controlbar':{position:'bottom'},
	                'modes': [
	                      {type: 'html5'},
	                      {type: 'flash', src: '/images_www/js/mediaplayer-5.9/player.swf'},
	                      {type: 'download'}
	                         ]
	           });
	});
    </script>
 
  </td>
            </tr>
        </table>
        <h2>Related links</h2>

        <ul>
            <li><a href="junit-intro.html">Writing JUnit Tests in NetBeans IDE</a></li>
            <li><a href="debug-visual.html">Using the Visual Debugger</a></li>
            <li>Demo: <a href="debug-multithreaded-screencast.html">Debugging a Multithreaded Application in NetBeans IDE</a></li>
            <li>Demo: <a href="debug-stepinto-screencast.html">Visual Step Into Action in NetBeans Debugger</a></li>
            <li>Demo: <a href="debug-deadlock-screencast.html">Deadlock Detection Using the NetBeans Debugger</a></li>
        </ul>

    </body>
</html>
