Sometimes we encounter questions like how to run a single test case multiple times? Well, invocationCount is the answer to that question. In this post, we will discuss the invocationCount attribute used with @Test annotation in TestNG.
What does this attribute do, or what is the use of invocation count? invocationCount helps in executing a single test case multiple times. So, if you have a test case that needs to be run multiple times, invocationCount can help you.
Syntax
@Test(invocationCount = num) where num = the number of times you want to run this test method.
Example
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | package Test; import org.testng.Assert; import org.testng.annotations.Test; public class CodekruTest { @Test (invocationCount = 5 ) // now, this test case will run 5 times public void test2() { System.out.println( "test2 is passed" ); Assert.assertTrue( true ); } } |
Below is the XML file to run the above test class
1 2 3 4 5 6 7 8 | < suite name = "codekru" > < test name = "codekruTest" > < classes > < class name = "Test.CodekruTest" > </ class > </ classes > </ test > </ suite > |
Output after running the above XML file-
test2 is passed
test2 is passed
test2 is passed
test2 is passed
test2 is passed
PASSED: test2
PASSED: test2
PASSED: test2
PASSED: test2
PASSED: test2
===============================================
Default test
Tests run: 5, Failures: 0, Skips: 0
===============================================
So, here we can see that test() ran five times.
The What If scenarios
What if we kept invocationCount =0? What will happen then?
Here the test case won’t even run, as shown in the below example
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | package Test; import org.testng.Assert; import org.testng.annotations.Test; public class CodekruTest { @Test (invocationCount = 0 ) // now, this test case will run 5 times public void test2() { System.out.println( "test2 is passed" ); Assert.assertTrue( true ); } } |
Output after running the same XML file –
===============================================
codekru
Total tests run: 0, Passes: 0, Failures: 0, Skips: 0
===============================================
Here we can see that no test case or method was executed.
What if we kept invocationCount as a negative value?
It won’t give any error, but the test case won’t be executed.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | package Test; import org.testng.Assert; import org.testng.annotations.Test; public class CodekruTest { @Test (invocationCount = - 2 ) // now, this test case will run 5 times public void test2() { System.out.println( "test2 is passed" ); Assert.assertTrue( true ); } } |
Output –
===============================================
codekru
Total tests run: 0, Passes: 0, Failures: 0, Skips: 0
===============================================
We hope you liked the article. If you have any doubts or concerns, please feel free to write us in the comments or mail us at admin@codekru.com.
Other @Test attributes
- @Test annotation attributes – threadPoolSize attribute
- @Test Annotation attributes – alwaysRun attribute
- @Test Annotation attributes – enabled attribute
- @Test Annotation attributes – dependsOnMethods attribute
- @Test annotation attributes – expectedExceptions attribute
- @Test annotation attributes – expectedExceptionsMessageRegExp attribute
- @Test annotation attributes – priority attribute