テスト: JUnit 5
ユニットテストを書いてコードの品質を確保。
JUnit
Java の標準テストフレームワーク。
Assertions
期待値と実際を比較。
Mock
依存をダミーに置き換え。
JUnit
import org.junit.jupiter.api.*;import static org.junit.jupiter.api.Assertions.*;
class CalculatorTest { private Calculator calc;
@BeforeEach void setUp() { calc = new Calculator(); }
@Test @DisplayName("1 + 1 = 2") void additionWorks() { assertEquals(2, calc.add(1, 1)); }
@Test void divisionByZeroThrows() { assertThrows(ArithmeticException.class, () -> calc.divide(1, 0)); }
@AfterEach void tearDown() { calc = null; }}実行結果
Tests run: 2, Failures: 0, Errors: 0
Bad
// ❌ Bad: main で手動テストpublic static void main(String[] args) { if (calc.add(1, 1) != 2) { System.out.println("FAIL!"); }}Good
// ✅ Good: JUnit でテスト@Testvoid additionWorks() { assertEquals(2, calc.add(1, 1));}パターン
// パラメータ化テスト@ParameterizedTest@ValueSource(ints = {1, 2, 3})void testMultipleInputs(int number) { assertTrue(number > 0);}
@ParameterizedTest@CsvSource({"1, 1, 2", "2, 3, 5", "10, 20, 30"})void testAddition(int a, int b, int expected) { assertEquals(expected, calc.add(a, b));}
// モック (Mockito)@ExtendWith(MockitoExtension.class)class UserServiceTest { @Mock UserRepository repository;
@InjectMocks UserService service;
@Test void findUser() { when(repository.findById(1L)) .thenReturn(Optional.of(new User("Alice")));
User user = service.findById(1L); assertEquals("Alice", user.getName()); }}
// 実行// mvn test// gradle test Tip: テスト駆動開発 (TDD) を心がける。
合格ライン
@Test でテストを書ける
Mockito でモックを使える
参考リンク
演習課題
課題1: @Test
JUnit 5 でユニットテストを作成してください。
課題2: Mockito
Mockito でモックを作成してテストしてください。