2017-10-16 4 views

답변

1

방법 Shell#evaluate()은 공개되었으며 정확히 그 목적을 위해 매우 구체적인 책임을지고 있습니다 (한 명령 만 평가하십시오). 더 많은 것을 제공해야한다고 생각되면 프로젝트에 문제를 만드십시오. (테스트에 관한 문서 장을 반드시 작성해야합니다.)

+0

을 참조하십시오. 챕터 추가에 관한 문제를 프로젝트에서 제기 할 것입니다. – user2153465

+0

잠재적 인 추가 정보는이 링크를 참조하십시오. https://github.com/spring-projects/spring-shell/issues/171 –

0

다음은 어떻게 작동하는지 보여줍니다.

먼저 jline 루프에 걸리지 않도록 기본 셸 응용 프로그램 실행기를 다시 정의해야합니다. 이 통합 테스트 중에 만 우선 그래서 당신이 "테스트"프로필에 대해이 사용자 정의 응용 프로그램 주자를 연결해야합니다

@Component 
public class CliAppRunner implements ApplicationRunner { 
    public CliAppRunner() { 

    } 

    @Override 
    public void run(ApplicationArguments args) throws Exception { 
     //do nothing 
    } 


} 

참고 : 당신은 당신의 자신의 등을 정의하여이 작업을 수행 할 수 있습니다. 당신이 쉘 명령을 테스트하려면

, 당신은 다음과 같은 테스트를 작성할 수 있습니다 "1 3 추가": 위의 테스트가 아무것도 어설하지 않는

@RunWith(SpringJUnit4ClassRunner.class) 
@SpringBootTest(classes =CliConfig.class) 
public class ShellCommandIntegrationTest { 

    @Autowired 
    private Shell shell; 

    @Test 
    public void runTest(){ 


     Object result=shell.evaluate(new Input(){ 
      @Override 
      public String rawText() { 
       return "add 1 3"; 
      } 

     }); 

     DefaultResultHandler resulthandler=new DefaultResultHandler(); 
     resulthandler.handleResult(result); 


    } 


} 

참고. 아마도 결과의 구문 분석/형식화를 다루는 ResultHandler 인터페이스의 자체 구현을 작성하여 선언 할 수 있어야합니다.

희망이 있습니다.

+0

약간 다른 접근 방식으로 2 주 전에 다시 시도해 보았습니다. [Here] (https://github.com/indrabasak/spring-shell-example)이 저의 모범입니다. –