Test method naming conventions in JUnit - Build an Automation Script
import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; public class CalculatorTest { @Test void add_TwoPositiveNumbers_ReturnsCorrectSum() { Calculator calculator = new Calculator(); int result = calculator.add(3, 5); assertEquals(8, result, "3 + 5 should equal 8"); } } class Calculator { public int add(int a, int b) { return a + b; } }
The test class CalculatorTest contains a single test method named add_TwoPositiveNumbers_ReturnsCorrectSum. This name clearly states the method under test (add), the condition (TwoPositiveNumbers), and the expected result (ReturnsCorrectSum).
The method is annotated with @Test from JUnit 5 to mark it as a test method.
Inside the test, we create an instance of Calculator and call the add method with 3 and 5. We then assert that the result is 8 using assertEquals. The assertion message helps explain the expected behavior if the test fails.
This structure follows best practices by having a descriptive method name, using proper annotations, and clear assertions.
Now add two more test methods for subtraction and multiplication following the same naming conventions.
Practice
Solution
Step 1: Understand naming clarity
Good test method names clearly describe what is tested and the expected behavior.Step 2: Evaluate options
shouldReturnTrueWhenInputIsValid uses camelCase and starts with 'should', describing expected behavior. Others are vague or generic.Final Answer:
shouldReturnTrueWhenInputIsValid -> Option CQuick Check:
Clear descriptive names = shouldReturnTrueWhenInputIsValid [OK]
- Using vague names like 'test1' or 'check'
- Starting names with 'run' without context
- Not using camelCase for readability
Solution
Step 1: Recall Java identifier rules for method names
Java method names must be valid identifiers: start with letter/$_ , no spaces, hyphens, or starting digits; conventionally camelCase.Step 2: Check each option
shouldReturnFalseWhenInputIsNull uses valid camelCase. The option starting with '2' can't start with digit. The option with hyphen '-' is invalid. The option with spaces is invalid.Final Answer:
shouldReturnFalseWhenInputIsNull -> Option BQuick Check:
CamelCase method names = shouldReturnFalseWhenInputIsNull [OK]
- Starting method names with digits
- Using hyphens or spaces in method names
- Ignoring Java identifier syntax rules
shouldThrowExceptionWhenInputIsNegativeSolution
Step 1: Analyze the method name parts
The name starts with 'shouldThrowException' indicating expected exception behavior.Step 2: Understand the condition
'WhenInputIsNegative' means the test triggers when input is negative.Final Answer:
The method tests that an exception is thrown for negative input -> Option DQuick Check:
Method name meaning = exception thrown on negative input [OK]
- Ignoring 'ThrowException' meaning
- Confusing exception with return values
- Misreading the condition part of the name
testshouldReturnTrueWhenValidSolution
Step 1: Understand naming redundancy
Using both 'test' prefix and 'should' is redundant and not recommended.Step 2: Check other options
No invalid characters are present, length is sufficient, and 'should' implies verb usage.Final Answer:
It mixes 'test' prefix with 'should' which is redundant -> Option AQuick Check:
Redundant prefixes = test + should [OK]
- Using both 'test' and 'should' together
- Assuming length affects correctness
- Ignoring naming conventions for verbs
Solution
Step 1: Check clarity and style
shouldFailLoginWhenPasswordIsEmpty uses 'should' + verb + condition, making it clear and readable.Step 2: Evaluate other options
Options B, C, and D are less clear or mix styles, making them harder to understand quickly.Final Answer:
shouldFailLoginWhenPasswordIsEmpty -> Option AQuick Check:
Clear, descriptive, camelCase with 'should' = shouldFailLoginWhenPasswordIsEmpty [OK]
- Using unclear or mixed naming styles
- Omitting 'should' for behavior clarity
- Using underscores or inconsistent casing
Ready to prove it?
Pass the test and this pattern moves unknown
