如何在JUnit测试中运行Spring Shell脚本

时间:2015-03-04 05:11:29

标签: java spring junit spring-shell

我有一个基于Spring Shell的应用程序和几个脚本。是否有一种简单的方法可以在JUnit测试中运行脚本,以便在执行脚本期间发生某些异常/错误时测试失败?

测试的目的是确保所有正确的脚本都能正常运行。

更新1:

这是一个在JUnit中运行脚本的小助手类:

import org.apache.commons.io.FileUtils;
import org.springframework.shell.Bootstrap;
import org.springframework.shell.core.CommandResult;
import org.springframework.shell.core.JLineShellComponent;

import java.io.File;
import java.io.IOException;
import java.util.List;

import static org.fest.assertions.api.Assertions.*;

public class ScriptRunner {
  public void runScript(final File file) throws IOException 
  {
    final Bootstrap bootstrap = new Bootstrap();
    final JLineShellComponent shell = bootstrap.getJLineShellComponent();

    final List<String> lines = FileUtils.readLines(file);
    for (final String line : lines) {
      execVerify(line, shell);
    }   
  }
  private void execVerify(final String command, final JLineShellComponent shell) {
    final CommandResult result = shell.executeCommand(command);
    assertThat(result.isSuccess()).isTrue();
  }

}

1 个答案:

答案 0 :(得分:1)

您可以创建Bootstrap的实例,从中获取shell,然后executeCommand()(包括shell命令)。

您可能对Spring XD中为此做了什么感兴趣:https://github.com/spring-projects/spring-xd/blob/master/spring-xd-shell/src/test/java/org/springframework/xd/shell/AbstractShellIntegrationTest.java(尽管有很多特定于XD的详细信息)