Whiteship's Note

TDDBE - xUnit 19장

모하니?/Coding : 2008.09.01 16:42


이번에는 "먼저 setUp() 메소드를 호출한다."를 구현했습니다.

public class TestCaseTest extends TestCase {

    WasRun test;
   
    public TestCaseTest(String methodName) {
        super(methodName);
    }
   
    protected void setUp() {
        test = new WasRun("testMethod");
    }
   
    public void testRunning(){
        test.run();
        assert test.wasRun == true;
    }
   
    public void testSetUp(){
        test.run();
        assert test.wasSetUp == true;
    }
   
    public static void main(String[] args) {
        new TestCaseTest("testRunning").run();
        new TestCaseTest("testSetUp").run();
    }
}

테스트 클래스는 이미 setUp()을 반영했지만, 사실 setUp()을 반영하기 전에 구현을 마치고, 리팩터링 하면서 방금 구현한 setUp()을 사용해서 테스트 클래스까지 간단하게 리팩터링을 했습니다.

import java.lang.reflect.Method;

public class TestCase {
   
    String methodName;

    public TestCase(String methodName) {
        this.methodName = methodName;
    }
   
    public void run() {
        setUp();
        try {
            Method method = this.getClass().getMethod(methodName, null);
            method.invoke(this, null);
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

    protected void setUp() {}
}

Template Method 패턴을 사용해서, 하위 클래스에서 setUp()을 맘대로 구현할 수 있도록.. 했구요. run()에 워크 플로우를 정의했죠.

public class WasRun extends TestCase {

    boolean wasRun;
    boolean wasSetUp;
   
    public WasRun(String methodName) {
        super(methodName);
    }
   
    public void testMethod() {
        wasRun = true;
    }
   
    @Override
    protected void setUp() {
        wasRun = false;
        wasSetUp = true;
    }

}

WasRun에서도 역시 방금 구현한 setUp()을 사용해서 생성자를 좀 더 간단하게 했습니다.

'이번 장의 핵심 내용은 테스트 케이스들 간의 의존성을 없애기'였습니다. 지금처럼 매번 별도의 인스턴스를 만들기 때문에, 전역 변수를 사용하는 테스트가 아닌 이상 테스트 케이스들끼리 의존할 가능성은 거의 없게 됩니다.

'모하니? > Coding' 카테고리의 다른 글

@Resource 활용 팁  (6) 2008.09.08
TDDBE - xUnit 23장  (0) 2008.09.01
TDDBE - xUnit 22장  (0) 2008.09.01
TDDBE - xUnit 21장  (0) 2008.09.01
TDDBE - xUnit 20장  (0) 2008.09.01
TDDBE - xUnit 19장  (2) 2008.09.01
TDDBE - xUnit 18장.  (0) 2008.09.01
static inner class를 Spring에 bean으로 등록하기  (2) 2008.08.21
국내 최초 OSGi 기반 애플리케이션 프레임워크 OSAF 1.5 - 멀지 않았다.  (2) 2008.08.12
Mockito - 아규먼트 Matcher  (0) 2008.08.12
JavaMail - 첨부파일 읽기  (0) 2008.08.07
top

TAG , ,



: 1 : ··· : 160 : 161 : 162 : 163 : 164 : 165 : 166 : 167 : 168 : ··· : 299 :