JUnit Interview Questions and Answers
Ques 11. Why Not Just Write a main() Method for Unit Testing?
Ans. You can write a main() method in each class that needs to be tested for unit testing. In the main() method, you could create test object of the class itself, and write some tests to test its methods. However, this is not a recommended approach because of the following points:
* Your classes will be cluttered with test code in main method. All those test codes will be packaged into the final product.
* If you have a lots of classes to test, you need to run the main() method of every class. This requires some extra coding effort.
* If you want the test results to be displayed in a GUI, you will have to write code for that GUI.
* If you want to log the results of tests in HTML format or text format, you will have to write additional code.
* If one method call fails, next method calls won\'t be executed. You will have to work-around this.
Ques 12. Why Not Just Use System.out.println() for Unit Testing?Ans. If we add debug statements into code, it is a low-tech method for debugging it. It usually requires that output be scanned manually every time the program is run to ensure that the code is doing what\'s expected.
It generally takes less time in the long run to codify expectations in the form of an automated JUnit test that retains its value over time. If it\'s difficult to write a test to assert expectations, the tests may be telling you that shorter and more cohesive methods would improve your design.
Ques 13. Under What Conditions Should You Test set() and get() Methods?Ans. We should test to target areas that might break. set() and get() methods on simple data types are unlikely to break. So no need to test them.
set() and get() methods on complex data types are likely to break. So you should test them.
Ques 14. Do You Need to Write a Test Class for Every Class That Need to Be Tested?Ans. This is an interesting question.
The technical answer is no. There is no need to write one test class for each every class that need to be tested. One test class can contain many tests for many test target classes.
But the practical answer is yes. You should design one test class per test target class for low level basic tests. This makes your test classes much easier to manage and maintain. You should write separate test classes for high level tests that requires multiple target classes working together.
Ques 15. Can You Explain the Life Cycle of a JUnit3.8 Test Case Class?Ans. Test case class contains a setUp() method, a tearDown() method and multiple testXXX() methods. When calling a test runner to run this test class, the runner will execute those methods in a specific order giving the test case class an execution life cycle like this:
Most helpful rated by users: