This is also an interview question. These questions are asked to know how much you can think on a scenario.
Question was, “Can a test method return a value? If yes, how can you use it?”.
Yes, a @Test annotated method can return a value but that method will not be considered as a test method for TestNG anymore i.e. TestNG will ignore that method. Let’s see an example:
Ofcourse, you can call @Test method inside another @Test method as below and can use returned value. But here @Test annotated method will be same as normal method as TestNG will not consider that and run by default.
Since TestNG follows best practices for unit testing, which means a unit test method should not have a return value. This is the reason a @Test annotated method which is returning a value is ignored by TestNG default run behaviour.
But you can force TestNG to include test methods which are returning values to be included in normal run. You need to set allow-return-values as true at suite level. Update your testng xml as below:
Now run it and see output:
You can see TestNG included @Test method which is returning values. Not here that returned value is ignored here.
Where we can use this concept?
TestNG is a testing framework which can be used by both developers and testers. This concept can be used when you need to inherit an interface or abstract class and test its methods without changing method signatures.
More about TestNG in upcoming posts. Stay tuned.
If you have any doubt, feel free to comment below.
If you like my posts, please like, comment, share and subscribe.
Author: Amod Mahajan
A software Tester who is paid to judge products developed by others. Currently getting paid in American Dollars. Writing technical posts and creating YouTube videos are my hobbies.