Tests the interface
Ensures that a component does what it promises to do
Act like a math function
Component unit tests are written before actual implementation
Has good integration with Netbeans, Eclipse, IntelliJ, and Maven
If any unit tests fail, the build fails
Cause side effects
Is responsibility of software developer for each class they create
Result may differ depending on what happened previously
Include all static methods in Java Math class
Test Driven Development
Tests component's functionality only
Only the interfaces and shell implementation are written before unit tests
Makes it easy to create unit tests suites for Java components
Used to test lowest level components of an application
Always produce the same result
Cause no side effects
the de facto standard automated unit test framework in Java
Have no state
Is usually done with an automated framework like JUnit
Have a state
Each code path through a component is exercised
Care must be taken to put them into a known good state before testing
Knows nothing of the component's specific implementation
Also known as White Box Testing
Takes a component's implementation into account
Also known as Red/Green/Refactor