1<html>
2    <head>
3        <title>TestNG - Eclipse</title>
4        <script type="text/javascript" src="banner.js"></script>
5        <link rel="stylesheet" href="testng.css" type="text/css" />
6      </head>
7<body>
8
9<script type="text/javascript">
10    displayMenu("eclipse.html")
11</script>
12
13
14<h2 align="center">TestNG Eclipse plug-in</h2>
15<p>The TestNG Eclipse plug-in allows you to run your TestNG tests from Eclipse
16and easily monitor their execution and their output. It has its own <a href="http://github.com/cbeust/testng-eclipse">project repository called <tt>testng-eclipse</tt></a>.</p>
17
18
19<h3>Table of Contents</h3>
20
21&nbsp;&nbsp;<a class="summary" href="#eclipse-installation">1 - Installation</a>
22<br>
23&nbsp;&nbsp;<a class="summary" href="#eclipse-creating">2 - Creating a TestNG class</a>
24<br>
25&nbsp;&nbsp;<a class="summary" href="#eclipse-create-launch">3 - Launch configurations</a>
26<br>
27&nbsp;&nbsp;<a class="summary" href="#eclipse-create-class">3.1 - From a class file</a>
28<br>
29&nbsp;&nbsp;<a class="summary" href="#eclipse-create-groups">3.2 - From groups</a>
30<br>
31&nbsp;&nbsp;<a class="summary" href="#eclipse-create-xml">3.3 - From an XML file</a>
32<br>
33&nbsp;&nbsp;<a class="summary" href="#eclipse-create-method">3.4 - From a method</a>
34<br>
35&nbsp;&nbsp;<a class="summary" href="#eclipse-listeners">3.5 - Specifying listeners and other settings</a>
36<br>
37&nbsp;&nbsp;<a class="summary" href="#eclipse-viewing">4 - Viewing the results</a>
38<br>
39&nbsp;&nbsp;<a class="summary" href="#eclipse-search">5 - Search</a>
40<br>
41&nbsp;&nbsp;<a class="summary" href="#eclipse-summary">6 - The Summary tab</a>
42<br>
43&nbsp;&nbsp;<a class="summary" href="#eclipse-quickfix">7 - Converting JUnit tests</a>
44<br>
45&nbsp;&nbsp;<a class="summary" href="#eclipse-quickfixes">8 - Quick fixes</a>
46<br>
47&nbsp;&nbsp;<a class="summary" href="#eclipse-preferences">9 - Preferences and Properties</a>
48<br>
49&nbsp;&nbsp;<a class="summary" href="#eclipse-workbench-preferences">9.1 - Workbench Preferences</a>
50<br>
51&nbsp;&nbsp;<a class="summary" href="#eclipse-project-properties">9.2 - Project Properties</a>
52<br>
53&nbsp;&nbsp;<a class="summary" href="#testng-xml"></a>
54
55<!--
56  Installation
57-->
58<h3><a name="eclipse-installation">1 - Installation</a></h3><p>
59Once you have <a href="http://testng.org/doc/download.html">installed the plug-in</a>, restart Eclipse and select the menu <tt>Window / Show View
60/ Other...</tt>&nbsp; and you should see the TestNG view listed in the Java category.</p><p align="center">
61<img border="0" src="http://testng.org/pictures/view.png" />
62</p>
63<p>
64NOTE: since TestNG Eclipse Plugin 6.9.8, the minimum required TestNG version is <b>6.5.1</b>
65</p>
66
67<!--
68  Creating
69-->
70<h3><a name="eclipse-creating">2 - Creating a TestNG class</a></h3><p>
71
72To create a new TestNG class, select the menu File / New / TestNG:
73
74<p align="center">
75<img border="0" src="http://testng.org/pictures/new-1.png" />
76</p>
77
78If you currently have a Java file open in the editor or if you have a Java file selected in the Navigator, the first page of the wizard will show you a list of all the public methods of that class and it will give you the option to select the ones you want to test. Each method you select on this page will be included in the new TestNG class with a default implementation that throws an exception, so you remember to implement it.
79
80<p align="center">
81<img border="0" src="http://testng.org/pictures/new-2.png" />
82</p>
83
84The next page lets you specify where that file will be created, whether it should contain default implementation for some configuration methods, if you'd like a data provider and finally, if a <tt>testng.xml</tt> file should be generated.
85
86<p align="center">
87<img border="0" src="http://testng.org/pictures/new-3.png" />
88</p>
89
90The plug-in will make a guess about the best location where this file should be created (for example, if you are using Maven, the default location will be under <tt>src/test/java</tt>).
91
92<h3><a name="eclipse-create-launch">3 - Launch configuration</a></h3><p>Once you have created classes that contain TestNG annotations and/or one or
93more <tt>testng.xml</tt> files, you can create a TestNG Launch Configuration.&nbsp;
94Select the <tt>Run / Run...</tt> (or <tt>Run / Debug...</tt>) menu and create a new TestNG
95configuration:</p><p align="center">
96<img border="0" src="http://testng.org/pictures/launch.png" />
97</p>
98<p>You should change the name of this configuration and pick a project, which
99can be selected by clicking on the <tt>Browse...</tt> button at the top of the window.</p>
100<p>
101Runtime options:
102<ul>
103<li><b>Log Level</b>: specify the value (0-10) for different verbose log levels</li>
104<li><b>Verbose</b>: enable the runtime TestNG verbose log</li>
105<li><b>Debug</b>: enable more runtime TestNG debug info</li>
106<li><b>Serialization Protocol</b>: the serialization protocol used for communicating between TestNG Eclipse Plugin and TestNG runtime.
107The default is "Object Serialization", the other option ("String Serialization") is deprecated.</li>
108<li><b>Add the POM's JVM Arguments when launch</b>: for maven based project, we normally define maven-surefire-plugin for test phase and maven-failsafe-plugin for integration test phase, there might be having the testing runtime JVM arguments defined in the "argLine" element of the maven plugin configuration. If you check this option, TestNG Eclipse Plugin will try to recognize the JVM arguments in "argLine", add them to TestNG runtime JVM arguments when launch.<br/>
109NOTE 1: these JVM arguments are put on front of user defined VM arguments on "Arguments" tab, which means you can overide the POM defined JVM argumetns with the ones on "Arguments" tab.<br/>
110NOTE 2: if there are multiple "argLine" elements in the pom.xml, the first presence will be used. If it's not the desired behaviour, you can simply uncheck this option, and type your JVM arguments on the "Arguments" tab next to this "Test" tab.</li>
111</ul>
112</p>
113<p>Then you choose to launch your TestNG tests in the following ways:</p><h4><a name="eclipse-launch-class">4.2.1 - From a class file</a></h4><p>Make sure the box near <tt>Class</tt> is checked and then pick a class from your
114project.&nbsp; You can click on the <tt>Browse...</tt> button and pick it directly from a
115list.&nbsp; This list only contains classes that contain TestNG annotations:</p><p align="center">
116<img border="0" src="http://testng.org/pictures/classes.png" />
117</p>
118
119
120<h4><a name="eclipse-create-groups">3.2 - From groups</a></h4>
121<p>If you only want to launch one or several groups, you can type them in the
122text field or pick them from a list by clicking on the <tt>Browse...</tt> button&nbsp;
123
124<p align="center">
125<img border="0" src="http://testng.org/pictures/groups.png" />
126</p>
127
128
129<h4><a name="eclipse-create-xml">3.3 - From a definition file</a></h4>
130Finally, you can select a suite definition from your project.  It doesn't have to be named
131<tt>testng.xml</tt>, the plug-in will automatically identify all the applicable TestNG XML files
132in your project:
133<p align="center">
134<img border="0" src="http://testng.org/pictures/suites.png" />
135</p>
136You can type the regex on the filter text field to narrow down to suite definition files matching your search from a long list of files.
137
138<h4>
139<a name="eclipse-create-method">3.4 - From a method </a>
140</h4>
141<p>This launch isn't accomplished from the Launch dialog but
142directly from your Outline view:</p><p align="center">
143<img border="0" src="http://testng.org/pictures/outline.png" />
144</p>
145You can right-click on any test methods and select <tt>Run as... / TestNG test</tt> and only the selected
146method will be run (not shown on the above screenshot because I couldn't find a way to capture
147a contextual menu).<p>Method launching is also available from the Package
148Explorer view and from the Java Browser perspective.</p><p>Once you have selected one of these launches, you can also choose the logging of level. Then you can launch the tests by pressing the <tt>Debug</tt> (or <tt>Run</tt>) button, which will switch you to the Debug perspective and will open the main TestNG view.</p>
149
150<h4>
151<a name="eclipse-listeners">3.5 -Specifying listeners and other settings </a>
152</h4>
153
154As you saw above, the plug-in will let you start tests in many different ways:  from an XML file, from a method, a class, etc...  When you are running an XML file, you can specify all the settings you want for this run in the XML file, but what if you want to run a package in parallel mode with specific listeners?  How can you configure the settings for all the launches that are not done from an XML file?
155
156<p>
157
158In order to give you access to the most flexibility, TestNG lets you specify an XML suite file for all these launches, which you can find in the Preferences menu:
159
160<p align="center">
161<img border="0" src="http://testng.org/pictures/template.png"/>
162</p>
163
164If you specify a valid suite file as "XML template file", TestNG will reuse all the settings found in this XML file, such as parallel, name, listeners, thread pool size, etc...  Only the <tt>&lt;test&gt;</tt> tags in this file will be ignored since the plug-in will replace these by a generated <tt>&lt;test&gt;</tt> tag that represents the launch you chose.
165
166<!--
167  Viewing
168-->
169<h3>
170<a name="eclipse-viewing">4 - Viewing the test results </a>
171</h3>
172
173<p align="center">
174<img border="0" src="http://testng.org/pictures/success.png" />
175</p>
176
177<p>The above view shows a successful run of the tests:&nbsp; the bar is green
178and no failed tests are reported.&nbsp; The <tt>All tests</tt> tab shows you a list of
179all the classes and methods that were run.</p><p>If your test run contains failures, the view will look like this:</p><p align="center">
180<img border="0" src="http://testng.org/pictures/failure.png" />
181</p>
182
183<p>You can use the <tt>Failed tests</tt> tab to display only these tests that failed, and
184when you select such a test, the stack trace will be shown on the right-hand
185pane.&nbsp; You can double click on the offending line to be taken directly to
186the failure in your code.</p>
187
188<h3>
189<a name="eclipse-search">5 - Search </a>
190</h3>
191
192
193<p align="center">
194<img border="0" src="http://testng.org/pictures/search.png" />
195</p>
196
197<p>When you have hundreds of tests running, finding a specific one is not always easy, so you can type a few letters of the test method or its parameters in the Search box and the content of the tree will automatically narrow down to methods matching your search. Note in the screen shot above that the search also works on parameters provided by <tt>@DataProvider</tt>.</p>
198
199<h3>
200<a name="eclipse-summary">6 - Summary </a>
201</h3>
202
203
204<p align="center">
205<img border="0" src="http://testng.org/pictures/summary1.png" />
206</p>
207<p>The Summary tab gives you statistics on your test run, such as the timings, the test names, the number of methods and classes, etc&#8230; Since the results are shown in a table, you can also sort on any criterion you like for easier parsing. This is especially handy when you are trying to determine what tests take the longest time.</p>
208
209<p>The search box works in this view as well, and note that in the screen shot below, the Time column is sorted in decreasing order:</p>
210<p align="center">
211<img border="0" src="http://testng.org/pictures/summary2.png" />
212
213
214
215<h3><a name="eclipse-quickfix">7 - Converting JUnit tests</a></h3>
216
217You can easily convert JUnit 3 and JUnit 4 tests to TestNG.
218
219<p>
220
221Your first option is to use the Quick Fix function:
222
223<p>
224
225<p align="center">
226<img border="0" src="http://testng.org/pictures/convert1.png" />
227<br>
228<b>Convert from JUnit 3</b>
229</p>
230
231<p align="center">
232<img border="0" src="http://testng.org/pictures/convert2.png" />
233<br>
234<b>Convert from JUnit 4</b>
235</p>
236
237You can also convert packages or entire source folders with the conversion refactoring:
238
239<p align="center">
240<img border="0" src="http://testng.org/pictures/refactoring1.png" />
241</p>
242
243The refactoring wizard contains several pages:
244
245<p align="center">
246<img border="0" src="http://beust.com/pics/menu-convert2.png " />
247</p>
248
249This page lets you generate a testng.xml automatically. You can configure whether to include your test classes individually or by package, the suite and test name and also whether these tests should run in parallel.
250
251<p align="center">
252<img border="0" src="http://testng.org/pictures/refactoring2.png" />
253</p>
254
255This page gives you an overview of the changes that are about to be performed. You can also decide to exclude certain files from the refactoring.
256
257<p>
258
259When you are done, press the "Finish" button. Like all Eclipse refactorings, you can undo all these changes in one click:
260
261<p align="center">
262<img border="0" src="http://beust.com/pics/menu-convert4.png" />
263</p>
264
265<h3><a name="eclipse-quickfixes">8 - Quick fixes</a></h3>
266
267The TestNG Eclipse plug-in offers several quick fixes while you are editing a TestNG class (accessible with <tt>Ctrl-1</tt> on Windows/Linux and <tt>&#8984;-1</tt> on Mac OS):
268
269<h4>Convert to JUnit</h4>
270
271This was covered in the <a href="#eclipse-quickfix"> previous section</a>.
272
273<h4>Pushing and pulling <tt>@Test</tt> annotations</h4>
274
275If you have several test methods annotated with <tt>@Test</tt> and you'd like to replace them all with a single <tt>@Test</tt> annotation at the class level, choose the "Pull annotation" quick fix:
276
277<p align="center">
278<img border="0" src="http://testng.org/pictures/refactoring-pull-annotation.png" />
279</p>
280
281Reciprocally, you can move a class level <tt>@Test</tt> annotation onto all your public methods:
282
283<p align="center">
284<img border="0" src="http://testng.org/pictures/refactoring-push-annotation.png" />
285</p>
286
287<h4>Automatically importing <tt>asserts</tt></h4>
288
289Apply a quick fix on an assert method to automatically import it:
290
291<p align="center">
292<img border="0" src="http://testng.org/pictures/quickfix-import.png" />
293</p>
294
295<!--
296  Preferences and Properties
297-->
298<h3><a name="eclipse-preferences">9 - Preferences and Properties</a></h3>
299<h4><a name="eclipse-workbench-preferences">9.1 - Workbench Preferences</a></h4>
300TestNG workbench preferences:
301<p align="center">
302<img border="0" src="http://testng.org/pictures/preferences.png" />
303</p>
304<p>
305The preferences here are shared among projects and launch configurations.
306<ul>
307<li><b>Output directory</b>: the path where to store the output including temp files, report files, etc. By default, the path is relative to each project except you check the option <b>Absolute ouput path</b> below.</li>
308<li><b>Disalbe default listeners</b>: disable the default listeners when launch testng runtime</li>
309<li><b>Show view when test complete</b>: active the TestNG result view when the test complete</li>
310<li><b>Use Project TestNG jar</b>: It's default to be checked which means TestNG Eclipse Plugin will use the project TestNG jar (for example, the TestNG version managed with maven) when launch TestNG runtime. Otherwise, the TestNG eclipse plugin embedded TestNG version will be used.<br/>
311When to check this option?
312<ul>
313  <li>you want it behviour as close as running outside IDE, e.g. with maven surefire plugin, since the Plugin embedded version of TestNG most likely different with the version of your project.</li>
314  <li>you don't want the Plugin embedded plugin and it's dependent libs (e.g. snakeyaml, etc.) pollute your TestNG runtime classpath.</li>
315</ul></li>
316<li><b>Template XML file</b>: the absolute path of the template xml file used to genernate the custom test suite xml before launch</li>
317<li><b>Excluded stack traces</b>: </li>
318<li><b>Pre Defined Listeners</b>: </li>
319</ul>
320</p>
321
322<h4><a name="eclipse-project-properties">9.2 - Project Properties</a></h4>
323Project level properties:
324<p align="center">
325<img border="0" src="http://testng.org/pictures/project_properties.png" />
326</p>
327<p>
328Here are properties on each project level, it will override the same properties if defined in <a class="summary" href="#eclipse-workbench-preferences">TestNG workbench preferences</a>
329<ul>
330<li><b>Output directory</b>: for example, in the figure above, I prefer to put the output to maven 'target' directory rather than the default one under project root</li>
331<li><b>Watch testng-result.xml</b>:</li>
332<li><b>Template XML file</b>: see in <a class="summary" href="#eclipse-workbench-preferences">TestNG workbench preferences</a></li>
333<li><b>Use Project TestNG jar</b>: see in <a class="summary" href="#eclipse-workbench-preferences">TestNG workbench preferences</a></li>
334<li><b>Pre Defined Listeners</b>: see in <a class="summary" href="#eclipse-workbench-preferences">TestNG workbench preferences</a></li>
335</ul>
336</p>
337
338<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
339</script>
340<script type="text/javascript">
341_uacct = "UA-238215-2";
342urchinTracker();
343</script>
344
345</body>