Using one assertion per test helps keep tests simple and clear. It makes it easier to find what went wrong when a test fails.
0
0
Single assertion per test debate in JUnit
Introduction
When you want to check one specific behavior or outcome in your code.
When you want your test reports to clearly show which part failed.
When you want to write easy-to-understand and maintainable tests.
When debugging tests to quickly find the problem.
When teaching beginners how to write tests step-by-step.
Syntax
JUnit
import static org.junit.jupiter.api.Assertions.assertEquals; import org.junit.jupiter.api.Test; public class ExampleTest { @Test void testSingleAssertion() { int expected = 5; int actual = 2 + 3; assertEquals(expected, actual); } }
Each test method should ideally have one assertion to check one thing.
Use descriptive test method names to explain what is being tested.
Examples
This test checks only the addition result with one assertion.
JUnit
import static org.junit.jupiter.api.Assertions.assertEquals; import org.junit.jupiter.api.Test; public class CalculatorTest { @Test void testAddition() { assertEquals(4, 2 + 2); } }
This test checks if a string starts with 'he' using a single assertion.
JUnit
import static org.junit.jupiter.api.Assertions.assertTrue; import org.junit.jupiter.api.Test; public class StringTest { @Test void testStringStartsWith() { String text = "hello"; assertTrue(text.startsWith("he")); } }
Sample Program
This simple test checks that 1 + 2 equals 3 with one assertion. If the assertion fails, the test will fail and show the difference.
JUnit
import static org.junit.jupiter.api.Assertions.assertEquals; import org.junit.jupiter.api.Test; public class SingleAssertionTest { @Test void testSum() { int sum = 1 + 2; assertEquals(3, sum); } }
OutputSuccess
Important Notes
Sometimes multiple assertions are needed, but keep tests focused on one behavior.
Too many assertions in one test can hide which part failed.
Use multiple small tests instead of one big test with many checks.
Summary
One assertion per test keeps tests simple and clear.
It helps quickly find problems when tests fail.
Write many small focused tests instead of few big ones.