2012-05-18 2 views
7

저는 스크린에 데이터를 표시하고자하는 새 프로젝트를 진행하고 있습니다. 나는 나를 위해 새롭다 TDD를 사용하기로 마음 먹었지 만, 나는 그 생각을 사랑하고 지금까지 꽤 괜찮아졌다.JFrame을 TDD하는 방법?

JFrame을 설정하고 Textarea를 추가 한 다음 텍스트를 넣으려면 어떻게해야 제대로 테스트 할 수 있습니까? 또는 내 측면의 TDD 컨텍스트에서 잘못된 생각입니까? TDD 방식으로 데이터가 올바르게 표시되도록하고 싶습니다. 표시되는 텍스트의 생성은 테스트로 제대로 덮여 있지만 으로 표시됩니다. 여기

는 완전히 단순화 된 예입니다

public class MyTextDisplay { 
    public static void main(String[] args) { 
     JFrame my_frame = new JFrame("DisplaySomeText"); 
     my_frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     JTextArea textArea = new JTextArea(5, 20); 
     textArea.setEditable(false); 

     my_frame.add(textArea); 
     my_frame.setVisible(true); 

     //this would be in a separate method 
     textArea.append("Hello World"); 
    } 
} 
+0

TDD 수명주기에 경계 테스트 (UI 테스트)를 포함 하시겠습니까? 나는 TDD의 큰 지지자이지만 경계 테스트, 서비스 계층 및 비즈니스 계층의 다른 부분은 포함하지 않습니다. –

+0

바스 티언 (Baastian), 이것은 첫 번째 질문입니다. +1. 그것에 노력을 기울여 주셔서 감사합니다. – jmort253

+0

그래서 디스플레이 및 물건을 테스트하는 것은 완전히 다른 주제로보아야합니까? 언급했듯이, 나는 TDD에 대해 매우 익숙하다 ... –

답변

5

TDD는 조금 다르게 생각을해야합니다. 먼저 솔루션의 코드를 작성하기 전에 테스트 할 내용과 테스트 할 방법을 결정합니다.

GUI의 경우 이것은 매우 까다로워 질 수 있으며 모든 정직성에서 GUI에는 별도의 계층에있을 수있는 논리가 없어야합니다. 예를 들어 표시되는 값은 GUI와 관련이 없지만 개별적으로 테스트 할 수있는 객체의 값이어야합니다. 이를 통해 디스플레이 (뷰)와는 별개로 주요 비즈니스 로직 (모델 및 컨트롤러)을 개발할 수 있습니다. 이것은 MVC 패턴입니다. 테스트 주도 개발은 단순히 코드를 작성하기 전에 할 수있는 것을 테스트한다는 의미이며, 코드를 추가 할수록 더 많은 테스트가 통과하기 시작합니다.

나는 내 디자인에 중점을두고 텍스트 값을 생성하는 모든 것이 예상대로 작동하는지 확인하고자한다. GUI는 "벙어리 (dumb)"이어야하며 표시된 값이 실제로 올바른지에 대한 우려가있는 경우에는 값을 표시하거나 검색하는 데에만 집중해야합니다.

자동화 된 도구 (적절한 테스트)로 GUI를 테스트하는 것은 악명 높기 때문에 가능한 한 많이 피하고 가능한 한 많이 실제 응용 프로그램에서 내 GUI를 분리합니다. 그런 다음 GUI를 한 번 테스트하고, GUI를 계속해서 테스트하지 않고 비즈니스 로직에 집중할 수 있습니다.

+0

GUI를 가능한 한 강력하게 분리하고 지금 내 TDD주기에 그대로 두겠습니다! Thx –

+0

탁월한 선택입니다. GUI에는 응용 프로그램이 작동하는 방식을 방해 할 수있는 논리가 없어야합니다. – Ewald

관련 문제