Table of Content
 
Unit Testing Basics
- What is Unit Testing?
 - What is JUnit?
 - Introducing a Simple Unit Test in JUnit
 - Structure of a Unit Test (Arrange-Act-Assert and Given/When/Then)
 - Conventions for Writing Unit Tests
 - Characteristics of Proper Unit Tests
 - What are Assertions?
 
Creating a Java Project Using JUnit
- Creating a Java Project Using the Maven Quickstart Archetype in JUnit
 - Introducing a Typical Java Project Structure (Production vs Test Source Trees)
 - Understanding the Basic Conventions for Creating Unit Tests (Package and Naming)
 
Writing and Running Unit Tests with JUnit and IntelliJ IDEA
- Creating a Test Method with @Test Annotation
 - Running a Unit Test Within the Integrated Development Environment (IDE) and Understanding Test Success
 - Understanding Test Failures with Exceptions
 - Failing a Unit Test Explicitly with Assert.Fail()
 - Using Assert.Fail() to Check Validation Logic in a Try/Catch
 - Introduction to the JUnit Assertions API
 - Structuring Unit Tests with Arrange-Act Assert
 - Understanding the Execution of Assertions and JUnit's Fail-fast Test Failure Mechanism
 - Adding Descriptive Comments to Assertions and Test Failures to Aid Diagnostics
 - Coding a Unit Test Following Arrange-Act-Assert
 - Keeping Test Setup (Don't Repeat Yourself) DRY with @Before
 - Understanding Test Fixture Instantiation
 
Using Testing with Mock Objects and Mockito
- What Is Mockito and What Are Mock Objects?
 - Introduction to Testing with Mock Objects
 - Configuring Projects Using Mockito
 - Creating a Project Which Uses JUnit and Mockito
 - Coding a Layered Architecture - Presentation Layer
 - Coding a Layered Architecture - Business Layer
 - Coding a Layered Architecture - Persistence Layer
 - Putting the Correct Packages in Place to Respect the layering
 - Writing a Test for the Login Controller in the Presentation Layer
 - Understanding the Test Fixture Setup While Writing Mock Object-based Unit Tests
 - Writing a Test for the Authentication Service in the Business Layer
 - Thinking about Design Decisions When Unit Testing
 
Hamcrest Assertions Library
- Evolving the Domain and Repository Classes
 - Ignoring Tests with @ignore
 - Implementing a Finder in the Repository
 - Implementing Business Logic in the Service
 - Configuring Maven to Use Java 8
 - Evolving the Repository Class
 - Adding a Parameter-driven Finder to the Service
 - Refactoring to Evolve a New Service
 - Generating Test Methods in the IDE and Toggling Between Production and Test Code
 - Introducing the JUnit Mockito Runner and @Mock
 - Analyzing the Production Code to Determine How to Write the Arrange Section
 - Using Mockito's @InjectMocks to Create the System Under Test with its Dependencies
 - Keep Yourself Motivated by Checking the Happy Path Test Output
 - Using the JUnit Assertions API to Write the Assert Section
 - Thinking about the Weaknesses of the JUnit Assertions API
 - Importance of Checking Your Work as You Go!
 - Upgrading a JUnit Project to Use the Full Hamcrest Version
 - Replacing JUnit Assertions with Hamcrest Assertions and Using Assertions with Collections
 - Understanding and Reading Hamcrest Test Failures
 - Quick Thoughts on Hamcrest Individual vs Collection Assertions
 - Do Not Invoke Unneeded Production Code in Your Test Classes
 - Understanding Evaluation of Hamcrest Matchers
 - Thinking about Keeping Production Code to a Minimum in Tests
 - Creating Complex Hamcrest Assertions with allOf Method and Property Matchers
 
Apply for Certification
https://www.vskills.in/certification/junit-certification-course
