반응형
TDD
1. TDD 개요
설명: 테스트 주도 개발(TDD)은 테스트를 먼저 작성하고, 그 테스트를 통과시키기 위한 최소한의 코드를 작성하는 개발 방법론입니다. 예시: 간단한 계산기 기능을 TDD로 개발한다고 가정합니다.
2. TDD의 단계
- 테스트 작성: 실패할 테스트 코드를 먼저 작성합니다.
- 코드 작성: 테스트를 통과시키기 위한 최소한의 코드를 작성합니다.
- 리팩토링: 코드를 개선하고, 테스트가 통과되는지 확인합니다.
// JUnit을 사용한 테스트 코드 작성
import static org.junit.Assert.assertEquals;
import org.junit.Test;
public class CalculatorTest {
@Test
public void testAdd() {
Calculator calc = new Calculator();
int result = calc.add(2, 3);
assertEquals(5, result);
}
}
3. TDD의 장점
- 버그 감소: 코드를 작성하기 전에 테스트를 통해 잠재적인 버그를 미리 발견할 수 있습니다.
- 코드 품질 향상: 테스트를 통해 코드가 예상대로 작동하는지 확인할 수 있어 코드의 품질이 향상됩니다.
- 리팩토링 용이: 테스트가 작성되어 있으므로, 리팩토링 시 기존 기능이 제대로 작동하는지 쉽게 확인할 수 있습니다.
JUnit
1. JUnit 소개
설명: JUnit은 Java 프로그래밍 언어용 단위 테스트 프레임워크로, TDD의 구현을 쉽게 도와줍니다.
2. JUnit 설치
설명: Maven을 사용하여 JUnit을 프로젝트에 추가할 수 있습니다.
<!-- pom.xml에 JUnit 추가 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
3. 기본 테스트 작성
설명: JUnit을 사용하여 기본 테스트 클래스를 작성합니다.
import static org.junit.Assert.assertEquals;
import org.junit.Test;
public class SimpleTest {
@Test
public void testAddition() {
assertEquals(2 + 3, 5);
}
}
4. 테스트 실행
설명: 테스트를 실행하여 결과를 확인합니다.
# Maven을 사용하여 테스트 실행
mvn test
실전 적용 사례
1. 사용자 인증 시스템
설명: TDD와 JUnit을 사용하여 사용자 인증 시스템을 개발합니다.
// 테스트 작성
import static org.junit.Assert.assertTrue;
import org.junit.Test;
public class AuthServiceTest {
@Test
public void testAuthenticate() {
AuthService authService = new AuthService();
boolean result = authService.authenticate("user", "password");
assertTrue(result);
}
}
// 코드 작성
public class AuthService {
public boolean authenticate(String username, String password) {
// 간단한 인증 로직
return "user".equals(username) && "password".equals(password);
}
}
2. 쇼핑 카트 기능
설명: 쇼핑 카트 기능을 TDD로 구현합니다.
// 테스트 작성
import static org.junit.Assert.assertEquals;
import org.junit.Test;
public class ShoppingCartTest {
@Test
public void testAddItem() {
ShoppingCart cart = new ShoppingCart();
cart.addItem("Apple", 3);
assertEquals(3, cart.getItemCount("Apple"));
}
}
// 코드 작성
import java.util.HashMap;
import java.util.Map;
public class ShoppingCart {
private Map<String, Integer> items = new HashMap<>();
public void addItem(String item, int quantity) {
items.put(item, quantity);
}
public int getItemCount(String item) {
return items.getOrDefault(item, 0);
}
}
3. 은행 계좌 관리 시스템
설명: 은행 계좌 관리 시스템을 TDD로 개발합니다.
// 테스트 작성
import static org.junit.Assert.assertEquals;
import org.junit.Test;
public class BankAccountTest {
@Test
public void testDeposit() {
BankAccount account = new BankAccount();
account.deposit(100);
assertEquals(100, account.getBalance());
}
}
// 코드 작성
public class BankAccount {
private int balance = 0;
public void deposit(int amount) {
balance += amount;
}
public int getBalance() {
return balance;
}
}
반응형
'IT' 카테고리의 다른 글
헬스케어 IT 가 뭔가요? (실제 코드 예시 첨부) (0) | 2024.07.25 |
---|---|
핀테크 (FinTech) 가 뭔가요? (1) | 2024.07.24 |
데이터베이스 조인(DB Join)이 뭐에요? (0) | 2024.07.19 |
CI/CD 파이프라인 구축은 어떻게 해요? (feat. Jenkins, CircleCI, GitHub Actions) (0) | 2024.07.18 |
디지털 포렌식이 뭐에요? (0) | 2024.07.16 |