JUnit
- JUnit is a unit testing framework for the Java programming language
- JUnit has been important in the development of test-driven development (TDD), and is one of a family of unit testing frameworks(xUnits)
- It is not an automated testing tool, we still have to write our test files by hand
- JUnit does give us some support so that we can write those test files more conveniently
Problems in testing the applications
- In a web application, to test the flow we need to deploy it in the server so if there is a change then again we need to restart the server
- There is no explicit concept of a test passing or failing
- There is no mechanism to collect results in a structured fashion
- More time consuming in Trial and error approach development
Advantages of JUnit
- Using JUnit we can save testing time
- JUnit tests can be run automatically and they check their own results and provide immediate feedback
- There’s no need to manually comb through a report of test results
- No need to build and deploy each time for a minor change
- Using JUnit, If we want to test the application (for web applications) then server is not required so the testing becomes fast
Members of JUnit
TestSuite
Collection of TestCases, Running a test suite will execute all test classes in that suite in the specified order
TestCase
- A formal written unit test case is characterized by a known input and by an expected output, which is worked out before the test is executed. The known input should test a precondition and the expected output should test a postcondition
- There must be at least two unit test cases for each requirement
Assertion
- These assertion methods typically start with assert and allow you to specify the error message, the expected and the actual result
- An assertion method compares the actual value returned by a test to the expected value, and throws an AssertionException if the comparison test fails
Test Suite Implementations
A test suite class can be implemented in two ways:
- Using TestRunners (org.junit.runner.JUnitCore)
- Using Annotations
TestRunner
public static void main(String[] args) {
Result result = JUnitCore.runClasses(TestClassOne.class,
TestClassTwo.class);
}
Annotations
@RunWith(Suite.class)
@Suite.SuiteClasses({ TestClassOne.class,
TestClassTwo.class})
public class JunitTestSuite {
}
Test Case Implementations
A test case class can be implemented in two ways:
- Extending TestCase(junit.framework.TestCase)
- Using Annotations
Extending TestCase
public class DemoTest extends TestCase{
public void test() {
fail(“Failed”);
}
}
Using Annotations
@Test
public void testPrintMessage() {
System.out.println(“Inside testPrintMessage()”);
assertEquals(message, messageUtil.printMessage());
}
References:
http://java.dzone.com/articles/junit-tutorial-beginners
http://www.vogella.com/tutorials/JUnit/article.html
http://www.tutorialspoint.com/junit/junit_test_framework.htm
Thanks 🙂