新的Spring Shell docs似乎沒有提供任何有關如何在Spring Boot上下文中集成測試CLI命令的示例。任何指針或例子將不勝感激。如何集成測試Spring Shell v2.x
回答
方法Shell#evaluate()
已經公開並且具有其特定的職責(僅評估一個命令)就是爲了這個目的。如果您覺得我們應該提供更多(關於測試肯定需要寫的文檔章節),請爲項目創建一個問題
謝謝。我會在項目中提出一個關於添加章節的問題。 – user2153465
查看此鏈接瞭解更多信息:https://github.com/spring-projects/spring-shell/issues/171 –
這是我如何得到這個工作。
您首先需要重寫默認的shell應用程序運行程序以避免卡住jline循環。
@Component
public class CliAppRunner implements ApplicationRunner {
public CliAppRunner() {
}
@Override
public void run(ApplicationArguments args) throws Exception {
//do nothing
}
}
請注意,你將不得不這種自定義應用程序對亞軍「測試」的個人資料相關聯,因此在集成測試階段只覆蓋:您可以通過定義自己,如做到這一點。
如果你想測試一個shell命令「加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接口的小實現來處理結果的解析/格式化,以便可以聲明它。
希望它有幫助。
我嘗試了幾個星期的時間,採用稍微不同的方法,它對我很有幫助。 [這裏](https://github.com/indrabasak/spring-shell-example)就是我的例子。 –
- 1. Spock&Spring Boot集成測試
- 2. Spring oauth2和集成測試
- 3. 測試RabbitMQ和Spring集成
- 4. Spring @PathVariable集成測試
- 5. 如何將monkeyrunner集成測試與emma覆蓋測試集成?
- 6. 如何做集成測試?
- 7. Maven集成測試不適用於Spring
- 8. Spring引導集成測試失敗,Neo4j
- 9. Spring MVC控制器的集成測試
- 10. Spring集成測試 - AuthenticationPrincipal未注入
- 11. 與JPA和Spring集成測試
- 12. Spring集成測試事務不回滾
- 13. 集成測試與Spring引導和MySQL
- 14. 單元測試與Spring的集成測試
- 15. 如何使用基本身份驗證集成測試Spring Boot?
- 16. 如何在使用方面時運行Spring集成測試?
- 17. 如何在Spring Boot集成測試中注入dataSource默認bean
- 18. 如何將Spring重試與AsyncRestTemplate集成
- 19. 集成測試
- 20. 集成測試
- 21. JUnit集成測試
- 22. MSF4J集成測試
- 23. SEAM集成測試
- 24. Groovy - 集成測試
- 25. Authlogic集成測試?
- 26. JMS集成測試
- 27. JavaScript集成測試
- 28. 測試燼組件集成測試
- 29. Spring集成測試:無法檢測默認資源位置
- 30. 如何跳過maven集成測試
您是否成功地進行了彈簧外殼在彈簧啓動環境下的集成測試? –
@indra是的,看我的更新 – user2153465