Test Overview
This test uses the Builder pattern to create a User object with test data. It verifies that the User object is built correctly with the expected name and age.
This test uses the Builder pattern to create a User object with test data. It verifies that the User object is built correctly with the expected name and age.
import static org.junit.jupiter.api.Assertions.assertEquals; import org.junit.jupiter.api.Test; public class UserTest { static class User { private final String name; private final int age; private User(Builder builder) { this.name = builder.name; this.age = builder.age; } public String getName() { return name; } public int getAge() { return age; } public static class Builder { private String name; private int age; public Builder setName(String name) { this.name = name; return this; } public Builder setAge(int age) { this.age = age; return this; } public User build() { return new User(this); } } } @Test public void testUserBuilder() { User user = new User.Builder() .setName("Alice") .setAge(30) .build(); assertEquals("Alice", user.getName()); assertEquals(30, user.getAge()); } }
| Step | Action | System State | Assertion | Result |
|---|---|---|---|---|
| 1 | Test starts | JUnit test runner is ready | — | PASS |
| 2 | Creates User.Builder instance | Builder object with default null name and age 0 | — | PASS |
| 3 | Calls setName("Alice") on Builder | Builder object with name = "Alice", age = 0 | — | PASS |
| 4 | Calls setAge(30) on Builder | Builder object with name = "Alice", age = 30 | — | PASS |
| 5 | Calls build() to create User object | User object created with name = "Alice", age = 30 | — | PASS |
| 6 | Assert user.getName() equals "Alice" | User object with name = "Alice" | user.getName() == "Alice" | PASS |
| 7 | Assert user.getAge() equals 30 | User object with age = 30 | user.getAge() == 30 | PASS |
| 8 | Test ends successfully | Test passed | — | PASS |
Builder pattern for test data in JUnit tests?User object in JUnit?builder() on the class.User.builder().setName(...).build(). User user = User.builder().setName("Alice").build(); matches this.user.getAge()?
var user = User.builder()
.setName("Bob")
.setAge(30)
.setAge(25)
.build();
setAge(25) overwrites previous age, so final age is 25.Product test data:
var product = Product.builder()
.setName("Book")
.setPrice(-10)
.build();
setName, setPrice, then build() correctly.Order test objects with different status but same customerId and amount. How can you best use the Builder pattern to avoid repeating common fields?Pass the test and this pattern moves unknown