JUnit Annotations :
The Junit 4.x
framework is annotation based, so let's see the annotations that can be used
while writing the test cases.
@Test annotation
specifies that method is the test
method.
@Test(timeout=1000) annotation
specifies that method will be failed if
it takes longer than 1000 milliseconds (1 second).
@BeforeClass annotation
specifies that method will be invoked
only once, before starting all the tests.
@Before annotation
specifies that method will be invoked
before each test.
@After annotation
specifies that method will be invoked
after each test.
@AfterClass annotation
specifies that method will be
invoked only once, after finishing all the tests.
@Test:
The Test annotation tells JUnit that the public void method to which it
is attached can be run as a test case.
To run the method, JUnit first constructs a fresh instance of the class
then invokes the annotated method.
Any exceptions thrown by the test will be reported by JUnit as a failure.
If no exceptions are thrown, the test is assumed to have succeeded.
|
@Test (expected =
Exception.class):
Sometimes we need to test the exception to be thrown by the test.
@Test annotation provides a parameter called 'expected', declares that a
test method should throw an exception.
If it doesn't throw an exception
or if it throws a different exception than the one declared, the test fails.
|
@Test(timeout=100):
Sometimes we need to measure the performance in terms of time.
The @Test annotations provides an optional parameter called 'timeout',
which causes a test to fail if it takes longer than a specified amount of clock
time (measured in milliseconds).
|
@Before:
When writing tests, it is common to find that several tests need similar
objects created before they can run.
Annotating a public void method
with @Before causes that method to be run before the Test method.
The @Before methods of super
classes will be run before those of the current class.
|
@After:
If you allocate external resources in a Before method you need to release
them after the test runs.
Annotating a public void method with @After causes that method to be run
after the Test method.
All @After methods are guaranteed to run even if a Before or Test method
throws an exception.
The @After methods declared in superclasses will be run after those of
the current class.
|
@BeforeClass:
Sometimes several tests need to share computationally expensive setup
(like logging into a database). While this can compromise the independence of
tests, sometimes it is a necessary optimization.
Annotating a public static void no-arg method with @BeforeClass causes it
to be run once before any of the test methods in the class.
The @BeforeClass methods of superclasses will be run before those the
current class.
The annotations @BeforeClass and @Before are same in functionality.
The only difference is the method
annotated with @BeforeClass will be called once per test class based, and the
method annotated with @Before will be called once per test based.
|
@AfterClass:
If you allocate expensive external resources in a BeforeClass method you
need to release them after all the tests in the class have run.
Annotating a public static void
method with @AfterClass causes that method to be run after all the tests in the
class have been run.
All @AfterClass methods are guaranteed to run even if a BeforeClass
method throws an exception.
The @AfterClass methods declared in superclasses will be run after those
of the current class.
The annotations @AfterClass and @After are same in functionality.
The only difference is the method annotated with @AfterClass will be
called once per test class based, and the method annotated with @After will be
called once per test based.
|
@Ignore:
Sometimes you want to temporarily disable a test or a group of tests.
Methods annotated with Test that are also annotated with @Ignore will not be
executed as tests.
Also, you can annotate a class containing test methods with @Ignore and
none of the containing tests will be executed.
Native JUnit 4 test runners should
report the number of ignored tests along with the number of tests that ran and the number of
tests that failed.
You can also use @Ignore annotation at class level.
|
Comments
Post a Comment
thanks