Annotations were formally added to the Java language
in JDK 5 and TestNG made the choice to use annotations to annotate test
classes.
Here is the list of annotations that TestNG
supports:
Here is a quick overview of the annotations
available in TestNG along with their attributes.
Configuration
information for a TestNG class:
@BeforeSuite:
The annotated method will be run before all tests in this suite have run.
@AfterSuite:
The annotated method will be run after all tests in this suite have run.
@BeforeTest:
The annotated method will be run before any test method belonging to the
classes inside the <test> tag is run.
@AfterTest:
The annotated method will be run after all the test methods belonging to the
classes inside the <test> tag have run.
@BeforeGroups:
The list of groups that this configuration method will run before. This method
is guaranteed to run shortly before the first test method that belongs to any
of these groups is invoked.
@AfterGroups:
The list of groups that this configuration method will run after. This method
is guaranteed to run shortly after the last test method that belongs to any of
these groups is invoked.
@BeforeClass:
The annotated method will be run before the first test method in the current
class is invoked.
@AfterClass:
The annotated method will be run after all the test methods in the current
class have been run.
@BeforeMethod:
The annotated method will be run before each test method.
@AfterMethod:
The annotated method will be run after each test method.
alwaysRun For before methods (beforeSuite,
beforeTest, beforeTestClass and beforeTestMethod, but not beforeGroups): If set
to true, this configuration method will be run regardless of what groups it belongs
to.
Forafter methods (afterSuite, afterClass, ...): If set to true,
this configuration method will be run even if one or more methods invoked
previously failed or was skipped.
dependsOnGroups :
The list of groups this method depends on.
dependsOnMethods :
The list of methods this method depends on.
Enabled : Whether methods on this class/method are
enabled.
groups :
The list of groups this class/method belongs to.
inheritGroups : If true, this method
will belong to groups specified in the @Test annotation at the class level.
@DataProvider
:
Marks a method as supplying data for a test method. The annotated method must
return an Object[][] where each Object[] can be assigned the parameter list of
the test method. The @Test method that wants to receive data from this
DataProvider needs to use a dataProvider name equals to the name of this
annotation.
Name : The
name of this data provider. If it's not supplied, the name of this data
provider will automatically be set to the name of the method.
parallel : If set to true,
tests generated using this data provider are run in parallel. Default value is
false.
@Factory
:
Marks a method as a factory that returns objects that will be used by TestNG as
Test classes. The method must return Object[].
@Listeners
:
Defines listeners on a test class.
Value : An array of classes that extend
org.testng.ITestNGListener.
@Parameters:
Describes how to pass parameters to a @Test method.
Value : The list of variables used to fill
the parameters of this method.
@Test Marks a
class or a method as part of the test.
alwaysRun
:
If set to true, this test method will
always be run even if it depends on a method that failed.
dataProvider:
The name of the data provider for this
test method.
dataProviderClass:
The class where to look for the data
provider. If not specified, the data provider will be looked on the class of
the current test method or one of its base classes. If this attribute is
specified, the data provider method needs to be static on the specified class.
dependsOnGroups: The list of groups this method depends on.
dependsOnMethods
:
The list of methods this method depends on.
Description
: The description for this method.
Enabled
: Whether methods on this
class/method are enabled.
expectedExceptions:The
list of exceptions that a test method is expected to throw. If no exception or
a different than one on this list is thrown, this test will be marked a
failure.
Groups
:
The list of groups this class/method belongs to.
invocationCount
:
The number of times this method should be invoked.
invocationTimeOut
:
The maximum number of milliseconds this test should take for the cumulated time
of all the invocationcounts. This attribute will be ignored if invocationCount
is not specified.
priority : The priority
for this test method. Lower priorities will be scheduled first.
successPercentage
:
The percentage of success expected from this method
singleThreaded : If set to true, all
the methods on this test class are guaranteed to run in the same thread, even
if the tests are currently being run with parallel="methods". This
attribute can only be used at the class level and it will be ignored if used at
the method level. Note: this attribute used to be called sequential (now
deprecated).
timeout : The maximum number of
milliseconds this test should take.
threadPoolSize : The
size of the thread pool for this method. The method will be invoked from
multiple threads as specified by invocationCount.
Note: this attribute is ignored if invocationCount
is not specified
TestNG identifies the methods it is interested in by
looking up annotations. Hence, method names are not restricted to any pattern
or format.
We can pass additional parameters to annotations.
Annotations are strongly typed, so the compiler will
flag any mistakes right away.
Test classes no longer need to extend anything (such
as TestCase, for JUnit 3).
No comments:
Post a Comment