TDDBE - xUnit 23장
드디어 마지막이군요.
ToDo
테스트 여러 개 실행하기
여러 개 테스트를 한 번에 묶어서 실행합니다. 테스트 코드를 실행하던 메인 메소드를 보고 그 중복을 제거하려는 시도에서 비롯된 거 같습니다.
new TestCaseTest("testTemplateMethod").run().summary();
new TestCaseTest("testResult").run().summary();
new TestCaseTest("testFailedResultFormatting").run().summary();
new TestCaseTest("testFailedResult").run().summary();
new TestCaseTest("testResult").run().summary();
new TestCaseTest("testFailedResultFormatting").run().summary();
new TestCaseTest("testFailedResult").run().summary();
바로 이 코드를
TestSuite suite = new TestSuite();
suite.add(new TestCaseTest("testTemplateMethod"));
suite.add(new TestCaseTest("testResult"));
suite.add(new TestCaseTest("testFailedResultFormatting"));
suite.add(new TestCaseTest("testFailedResult"));
suite.add(new TestCaseTest("testSuite"));
TestResult result = new TestResult();
suite.run(result);
System.out.println(result.summary());
suite.add(new TestCaseTest("testTemplateMethod"));
suite.add(new TestCaseTest("testResult"));
suite.add(new TestCaseTest("testFailedResultFormatting"));
suite.add(new TestCaseTest("testFailedResult"));
suite.add(new TestCaseTest("testSuite"));
TestResult result = new TestResult();
suite.run(result);
System.out.println(result.summary());
이렇게 바꿀 겁니다.
그래서 일단 testSuite이라는 테스트 클래스를 작성합니다.
public void testSuite(){
TestSuite suite = new TestSuite();
suite.add(new WasRun("testMethod"));
suite.add(new WasRun("testBrokenMethod"));
TestResult result = new TestResult();
suite.run(result);
assert result.summary().equals("2 run, 1 failed");
}
TestSuite suite = new TestSuite();
suite.add(new WasRun("testMethod"));
suite.add(new WasRun("testBrokenMethod"));
TestResult result = new TestResult();
suite.run(result);
assert result.summary().equals("2 run, 1 failed");
}
이 클래스는 Composite 패턴을 구현할 생각이라고 합니다. 따라서 TestSuite에 있는 run()과 TestCase()에 있는 run() 메소드는 똑 같은 모양을 해야합니다. 그러다 보니, run() -> run(TestResult)로 설계상의 변화를 줍니다. 그 결과 이미 기존에 존재하는 코드를 수정해야 하는 일이 생겼습니다. 하지만, 테스트 코드가 있었기 때문에 매우 안전하게 변화를 줄 수 있었습니다. 시간도 그만큼 단축이 되는거겠죠.
간단에 TDD의 달콤함을 다시 맛 볼 수 있었던 좋은 시간이었습니다. 이제는 JUnit 1.0 코드를 볼 차례로군요.. 그건 내일;;