새로운 Spring Shell docs은 Spring Boot 컨텍스트에서 CLI 테스트를 통합하는 방법에 대한 예제를 제공하지 않습니다. 모든 포인터 또는 예제를 주시면 감사하겠습니다.통합 테스트 방법 Spring Shell v2.x
답변
방법 Shell#evaluate()
은 공개되었으며 정확히 그 목적을 위해 매우 구체적인 책임을지고 있습니다 (한 명령 만 평가하십시오). 더 많은 것을 제공해야한다고 생각되면 프로젝트에 문제를 만드십시오. (테스트에 관한 문서 장을 반드시 작성해야합니다.)
을 참조하십시오. 챕터 추가에 관한 문제를 프로젝트에서 제기 할 것입니다. – user2153465
잠재적 인 추가 정보는이 링크를 참조하십시오. https://github.com/spring-projects/spring-shell/issues/171 –
다음은 어떻게 작동하는지 보여줍니다.
먼저 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 인터페이스의 자체 구현을 작성하여 선언 할 수 있어야합니다.
희망이 있습니다.
약간 다른 접근 방식으로 2 주 전에 다시 시도해 보았습니다. [Here] (https://github.com/indrabasak/spring-shell-example)이 저의 모범입니다. –
스프링 부트 환경에서 스프링 쉘 통합 테스트에 성공 했습니까? –
@indra 예, 내 업데이트 – user2153465