From JCFWiKi
[편집] 개요
- 블로그의 분류를 추가하기 위해서 TDD 기반으로 코드모듈을 생성하는 예제
- 관련 테이블을 생성하고 TestCodeService라는 JUnit 테스트 모듈을 통해 CodeService와 CodeDao를 개발한다.
[편집] 소스다운받기
[편집] 순서
- 테이블 생성 및 수정
- 코드값 INSERT
- test소스디렉토리에 edu.code.service.TestCodeService 생성.
- src 소스 디렉토리에서 code 모듈 개발
- edu.code.model.Code 모듈 추가하고 프라퍼티 및 getter/setter 추가.
- edu.code.service.CodeService 클래스 생성하고 의존성 및 API추가
- private CodeDao codeDao 프라퍼티 선언 및 setter 추가
- public List getCodes(String category) 메소드 개발
- public Code getCode(String id) 메소드 개발
- config/applicationContext-code.xml에 CodeService를 스프링 관리 빈으로 추가
- edu.code.dao.CodeDao 클래스 생성하고 API추가.
- jcf.dao.ibatis.BaseSqlMapClientDAO 상속
- public List getCodes(String category) 메소드 개발
- public Code getCode(String id) 메소드 개발
- config/applicationContext-code.xml에 CodeDao를 스프링 관리 빈으로 추가
- edu.code.dao.sqlmap.Code.xml 파일 생성하여 SQL 문장 작성
- getCodes 및 getCode <statement/>에 SQL 작성
- config/sqlmap-config.xml에 Code.xml 추가
- test 클래스인 TestCodeService 클래스를 JUnit 테스트로 실행(alt+shift+x --> t)
[편집] 테이블 생성
CREATE TABLE CODE(
id int,
name varchar(20),
description varchar(50),
category varchar(20),
CONSTRAINT code_pk PRIMARY KEY(id)
)
INSERT INTO CODE(id, name, description, category) VALUES(5, 'diary', '일상','blog_category_code');
INSERT INTO CODE(id, name, description, category) VALUES(6, 'news', '뉴스','blog_category_code');
INSERT INTO CODE(id, name, description, category) VALUES(7, 'pleasure', '기쁜일','blog_category_code');
// ALTER TABLE BLOG ADD categoryId int
// HSQLDB는 ALTER가 잘 안되는 경우가 발생하므로 DROP 후 새로 생성함.
DROP TABLE BLOG;
CREATE TABLE BLOG(
id int,
title varchar(50),
writer varchar(50),
description varchar(500),
regDate date,
isPublic char(1),
categoryId int,
CONSTRAINT blog_pk PRIMARY KEY(id)
)
[편집] 서비스테스트 모듈
import java.util.List;
import junit.framework.Assert;
import junit.framework.TestCase;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import edu.code.model.Code;
public class TestCodeService extends TestCase{
private CodeService codeService;
protected void setUp() throws Exception {
super.setUp();
AbstractApplicationContext context =
new ClassPathXmlApplicationContext(new String[]{"config/applicationContext.xml", "config/applicationContext-code.xml"});
codeService = (CodeService) context.getBean("codeService");
}
public void testGetCodes(){
List codes = codeService.getCodes("blog_category_code");
Assert.assertNotNull(codes);
Assert.assertEquals(3, codes.size());
}
public void testGetCode(){
Code code = codeService.getCode(5);
Assert.assertNotNull(code);
Assert.assertEquals("일상", code.getDescription());
}
}
[편집] 분류코드가 추가된 블로그 화면
- 테스트가 완료된 CodeService 모듈을 BlogAction에 추가하여 다음과 같이 블로그 분류값을 선택적으로 입력할 수 있도록 개발.