ToDo
나중에 tearDown 호출하기.

이 작업을 하기 전에 일단 이전까지 사용하던 flag 방식은 실행 순서를 못 잡기 때문에..이 작업을 잠시 미루고

ToDo
WasRun에 로그 문자열 남기기.

이 작업을 먼저 합니다. 모든 작업을 마치고 나면...

public class TestCaseTest extends TestCase {

    public TestCaseTest(String methodName) {
        super(methodName);
    }
   
    public void testTemplateMethod(){
        WasRun test = new WasRun("testMethod");
        test.run();
        assert test.log.equals("setUp testMethod tearDown ");
    }
   
    public static void main(String[] args) {
        new TestCaseTest("testTemplateMethod").run();
    }
}

테스트 코드가 줄어듭니다. 두둥.. 과정을 보여드리지 못해 아쉽네요.

public class WasRun extends TestCase {

    String log;
   
    public WasRun(String methodName) {
        super(methodName);
    }
   
    public void testMethod() {
        log += "testMethod ";
    }
   
    @Override
    protected void setUp() {
        log = "setUp ";
    }
   
    @Override
    protected void tearDown() {
        log += "tearDown ";
    }

}

WasRun에서는 flag를 없애고 로그를 남기는 방식으로 바껴서.. 역시 코드가 또 줄어들었습니다.

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);
        }
        tearDown();
    }

    protected void tearDown() {}

    protected void setUp() {}
}

끝..