2014-09-12 2 views
0

개인 프로젝트에서 유닛 테스트를하고 싶지만 문제가 있습니다.UI 생성 기능이없는 UI 클래스 내부의 테스트 메소드

내 프로젝트에는 큰 로직 레이어가 없습니다. 가장 중요한 논리는 UI와 엔터티 간의 상호 작용입니다. 일부 예외는 지불 및 기타 사항으로부터 언젠가 계산됩니다. 그러한 일은 거의 변하지 않으며 자유롭게 변화하는 것으로 시작하고 싶습니다.

예를 들어,이 클래스를 찾아보세요 :

public class TabClient extends JPanel{ 
    private JDateChooser dateChooser = ... 

    private JButton update = ... 
    private JButton search = ... 
    private JButton delete = ... 

    //other components specific for this panel/component 

    private SomeOtherClassComponent subComponent = ... 

    private void initComponents() 
    { 
    update.addActionListener(ClientHandler.getUpdateListener()); 
    //Others buttons 
    } 

    protected void mapFrom(Entitie entitie){ 
    subComponent.mapFrom(entitie); 

    dateChooser.setDate(entitie.getDateFor...()); 
    //specific components mappings 
    } 

    protected void mapTo(Entitie entitie){ 
    subComponent.mapTo(entitie); 

    entitie.setDateFor...(dateChooser.getDate()); 
    //specific components mappings 
    } 
} 

이 클래스는 내 프로젝트에서 탭 (TabbedPane 항목)의 예입니다.

클래스 은 Mediator과 비슷하지만 EventListener을 생성하여 UI 이벤트를 캡슐화합니다. 어떤 이벤트는 탭 컴포넌트에서 메소를 호출합니다. mapFrom

메소드에 대한 테스트를 작성하고 싶습니다. 그러나 어디서부터 시작해야할지 모르겠습니다. UI와 시험은 몇 가지를 분리하는 단위 테스트 시작하는 무엇을해야 하는지를 (무엇을 분리? 어디?) 또는 을 또는 리팩터링 clasess을 프레임 워크합니다.

Nowdays는 앱을 사용하여 손으로 테스트했습니다.

단위 테스트로 시작하려면 어떻게해야합니까?

테스트해야 할 사항은 무엇입니까? UI와 상호 작용하는 메소드 또는 무엇?

답변

0

(쉽게) 테스트 할 클래스를하기 위해서, 그들은 귀하의 경우하지 않을 수 있습니다 응집력의 높은 수준을 가질 필요가

당신은 특정 서비스 나 모든 비즈니스 로직을 이동하는 것이 좋습니다

도메인 계층을 사용하면 더 쉽게 테스트 할 수 있습니다.

당신은 당신의 응용 프로그램의 대부분의 수입 부분은 UI가 액션 메소드를 호출하고 조롱 선택하여 버튼을 눌러, 내가의 TabClient에게 종속성을 조롱하려고 할 것이다 (예를 들어) 시뮬레이션입니다 언급 한 바와 같이 객체를 호출하여 적절한 흐름이 호출되었는지 확인합니다 (즉, 올바른 객체의 올바른 메소드가 호출되었음을 주장합니다). 의존성을 조롱 할 수 있도록 클래스를 약간 리팩토링해야 할 수도 있습니다. 마찬가지로 모든 관련 UI 객체에 대한 테스트를 작성합니다.

UISpec4J

:

내가 정직하게 응용 프로그램 스윙을 테스트 적이없는, 그럼에도 불구하고 나는 (그들 중 일부는 UI 생성이 필요할 수 있지만) 귀하의 질문에 도움이 되거 수있는 다음 링크를 발견 Java World

Stack Overflow