2010-11-19 2 views
1

내가 만든 게임에 대한 단위 테스트를 작성하려고합니다. 게임은 사용자와 상호 작용하고 명령 줄에서 입력을받는 tic tac toe 구현입니다. 나는 사용자 입력이 인지 확인하고 테스트를 작성하는 방법에 대해 확신 할 수 없다. 예 : 실행시 : 프로그램에서 사용자에게 이름과 기호 ('x'또는 '0') 입력을 요청한 후 위치 입력을 계속 허용합니다.사용자 입력 테스트 유닛 - Java

@Before 메서드를 만들고이 메서드 안에 입력 문을 작성합니까? 또는 이것을 할 수있는 더 좋은 방법이 있습니까? 내 @Before 메소드에 모든 것을 쓰면 매우 커집니다.

제안 사항 도와주세요.

당신은 당신이 당신은 모두 않는 하나 개의 클래스가 없어야합니다

사용자 입력

을 체크하는 테스트를 작성하고 싶은 말은

답변

1

이상적으로는 입력 클래스를 인터페이스와 구현으로 분리 한 다음 테스트 용으로 MockInput을 만드는 것이 좋습니다.

interface IUserInput { 
    public String getUserName(); 
    public XO_Enum getUserSymbol(); 
} 

class MockUserInput implements IUserInput { 
    private XO_Enum xo; 
    private String name; 
    public MockUserInput(String name_, XO_Enum xo_) { 
     xo = xo_; 
     name = name_; 
    } 
    public String getUserName() { return name; } 
    public XO_Enum getUserSymbol() { return xo; } 
} 

일부 테스트에는 가짜 사용자 입력이 필요했을 때, 상황에 맞는 모의 것을 입력하고 계속 진행합니다. 기호와 이름은 하드 코딩 될 수 있지만이 방법은 유연성을 제공합니다.

hhafez의 대답이 주어지면 우리 중 한 명은 분명히 잘못된 질문에 대답하고 있습니다. 나는 그 사람이 맞는지 잘 모르겠습니다. 아 글쎄, 이것은 어느 쪽이든 도움이 될 것입니다.

+0

감사. 둘 다 도움이되었습니다. :) – JJunior

1

감사 받아 사용자 입력을 확인하십시오. 불량 응집력입니다. 대신 Validator (또는 checker 또는 호출하기를 원하는 것)와 사용자 입력을 받고 Validator가 이해할 수있는 객체를 빌드하는 입력 프로세서의 두 클래스가 있어야합니다.

일단 문제를 분리하면 Validator에 대한 junit 테스트 사례를 작성하는 것이 매우 간단해야합니다. 사용자 입력 클래스에 관해서는이 질문을보십시오 about how to unit test console based app

+0

감사합니다. 나는 둘 다 별도의 클래스를 만들었습니다. 나는 그것을 테스트하기위한 mock 객체를 생성 할 것이다. 많은 감사 :) – JJunior