Test classes group related tests together. Good names help you and others understand what is tested quickly.
When organizing tests for a specific feature or class in your code.
When you want to run all tests related to one part of your application.
When you need to find tests easily by their purpose or related code.
When sharing tests with teammates to improve collaboration.
When maintaining tests over time and avoiding confusion.
Syntax
JUnit
public class ClassNameTest {
@Test
public void testMethod() {
// test code here
}
}
Test class names usually end with Test to show they contain tests.
Each test method inside should test one behavior and be annotated with @Test.
Examples
This test class checks the Calculator class. The name ends with Test.
JUnit
public class CalculatorTest {
@Test
public void addsTwoNumbers() {
// test addition
}
}
This test class is for UserService. The method name describes what it tests.
JUnit
public class UserServiceTest {
@Test
public void createsUserSuccessfully() {
// test user creation
}
}
Sample Program
This test class MathUtilsTest tests the add method of MathUtils. The test method name testAdd clearly shows what is tested.
JUnit
import static org.junit.jupiter.api.Assertions.assertEquals;
import org.junit.jupiter.api.Test;
public class MathUtilsTest {
@Test
public void testAdd() {
MathUtils math = new MathUtils();
int result = math.add(2, 3);
assertEquals(5, result);
}
}
class MathUtils {
public int add(int a, int b) {
return a + b;
}
}
OutputSuccess
Important Notes
Keep test class names clear and related to the class or feature they test.
Use descriptive test method names to explain what each test checks.
Organizing tests well helps find and fix bugs faster.
Summary
Test classes group related tests and should be named clearly.
Use the suffix Test in class names to identify test classes easily.
Test method names should describe the behavior they verify.
Practice
(1/5)
1. Which of the following is the best practice for naming a JUnit test class?
easy
A. Use all uppercase letters for the class name
B. Start the class name with Test and end with Class
C. Use the suffix Test at the end of the class name
D. Name the class with random characters to avoid conflicts
Solution
Step 1: Understand naming conventions for test classes
JUnit test classes should be named clearly to indicate they contain tests. The common convention is to add the suffix Test to the class name being tested.
Step 2: Evaluate the options
Use the suffix Test at the end of the class name follows the standard convention by using the suffix Test. Options B, C, and D do not follow common or recommended practices.
Final Answer:
Use the suffix Test at the end of the class name -> Option C
Quick Check:
Test class suffix = Test [OK]
Hint: Test classes end with 'Test' suffix for clarity [OK]
Common Mistakes:
Starting class name with 'Test' instead of suffix
Using uppercase only names
Using unclear or random names
2. Which of the following is a correct JUnit test class declaration in Java?
easy
A. public class calculator_test { }
B. class TestCalculator { }
C. public test class Calculator { }
D. public class CalculatorTest { }
Solution
Step 1: Check Java class declaration syntax
Java classes must be declared with the keyword class and the class name should follow Java naming conventions (PascalCase). The class should be public if accessed externally.
Step 2: Validate each option
public class CalculatorTest { } is syntactically correct and follows naming conventions. class TestCalculator { } misses the public modifier but is valid Java; however, the name does not end with Test. public test class Calculator { } uses an invalid keyword test. public class calculator_test { } uses underscores and lowercase which is against Java class naming conventions.
Final Answer:
public class CalculatorTest { } -> Option D
Quick Check:
Correct Java class syntax = public class CalculatorTest { } [OK]
Hint: Use 'public class ClassNameTest' for test classes [OK]
Common Mistakes:
Using invalid keywords like 'test'
Using underscores in class names
Not using PascalCase for class names
3. Given the following test class, what will be the output when running the tests?
public class MathUtilsTest {
@org.junit.jupiter.api.Test
void testAdd() {
int result = 2 + 3;
org.junit.jupiter.api.Assertions.assertEquals(5, result);
}
@org.junit.jupiter.api.Test
void testSubtract() {
int result = 5 - 3;
org.junit.jupiter.api.Assertions.assertEquals(1, result);
}
}
medium
A. Both tests pass
B. One test passes, one test fails
C. Both tests fail
D. Compilation error due to missing imports
Solution
Step 1: Analyze the testAdd method
The testAdd method calculates 2 + 3 = 5 and asserts it equals 5. This assertion passes.
Step 2: Analyze the testSubtract method
The testSubtract method calculates 5 - 3 = 2 but asserts it equals 1. This assertion fails.
Final Answer:
One test passes, one test fails -> Option B
Quick Check:
Assertions: testAdd=pass, testSubtract=fail [OK]
Hint: Check assertion values carefully to spot failures [OK]
Common Mistakes:
Assuming both tests pass without checking values
Ignoring assertion expected vs actual values
Confusing compilation errors with assertion failures
4. Identify the error in the following JUnit test class:
public class StringUtilsTest {
@Test
public void testIsEmpty() {
boolean result = StringUtils.isEmpty("");
assertTrue(result);
}
}
medium
A. Missing import for @Test annotation
B. Method name should start with 'should'
C. assertTrue is not a valid assertion method
D. Class name should not end with 'Test'
Solution
Step 1: Check for missing imports
The code uses @Test annotation and assertTrue method but does not show imports. Without importing org.junit.jupiter.api.Test and org.junit.jupiter.api.Assertions.assertTrue, this code will not compile.
Step 2: Validate other options
Method naming conventions are flexible; starting with 'should' is not mandatory. assertTrue is a valid assertion method. Class name ending with 'Test' is correct.
Final Answer:
Missing import for @Test annotation -> Option A
Quick Check:
Missing imports cause compilation errors [OK]
Hint: Always import @Test and assertion methods [OK]
Common Mistakes:
Assuming method names must start with 'should'
Confusing assertion method names
Ignoring missing imports causing errors
5. You have a class named OrderProcessor. Which of the following is the best name for its JUnit test class and a test method that checks if an order is processed successfully?
hard
A. Class: OrderProcessorTest, Method: testProcessOrderSuccess
B. Class: TestOrderProcessor, Method: processOrder
C. Class: OrderProcessorTests, Method: checkOrder
D. Class: OrderProcessor_Test, Method: orderSuccessTest
Solution
Step 1: Choose the correct test class naming
The best practice is to name the test class by adding Test suffix to the class under test. Class: OrderProcessorTest, Method: testProcessOrderSuccess uses OrderProcessorTest, which is correct. Class: TestOrderProcessor, Method: processOrder prefixes with 'Test', which is less common. Class: OrderProcessorTests, Method: checkOrder uses plural 'Tests', which is acceptable but less standard. Class: OrderProcessor_Test, Method: orderSuccessTest uses underscore, which is not recommended.
Step 2: Choose the best test method name
Test method names should describe the behavior tested clearly. Class: OrderProcessorTest, Method: testProcessOrderSuccess's testProcessOrderSuccess clearly states the test purpose. Other options are less descriptive or ambiguous.
Final Answer:
Class: OrderProcessorTest, Method: testProcessOrderSuccess -> Option A
Quick Check:
Test class suffix + descriptive method name = Class: OrderProcessorTest, Method: testProcessOrderSuccess [OK]
Hint: Use ClassNameTest and descriptive test method names [OK]
Common Mistakes:
Using underscores in class names
Using vague test method names
Prefixing class names with 'Test' instead of suffix
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.