我的团队正在使用JUnit从eclipse启动测试。
在从eclipse执行这些测试之前,我们必须指定env变量LD_LIBRARY_PATH以在运行时加载依赖项。 当我的团队成员之一在项目中进行更改时,LD_LIBRARY_PATH的正确值可能会更改。我们有一个计算其正确值的脚本。
今天,我们有两个解决方案来设置变量:
第一种方法是非生产性的,使用第二种方法,我们每次更新项目时都必须重新启动eclipse。
更好的解决方案是编写一个脚本来设置变量,每次运行测试时都会被eclipse调用。
有没有办法在每次使用Eclipse测试之前调用脚本? 任何其他想法也将不胜感激。
答案 0 :(得分:2)
遵循SO queston How to run Unix shell script from Java code?的想法,您可以在每个测试或每个测试类之前执行脚本,如下所示
@Before // could also be @BeforeClass
public void setupEnvViaScript() throws IOException, InterruptedException {
ProcessBuilder processBuilder = new ProcessBuilder("my-script.cmd", "arg-1", "arg-2");
processBuilder.environment().put("JAVA_HOME", "value");
processBuilder.environment().put("ENV_VAR", "value");
processBuilder.directory(new File("d:/working/path/script/shall/be/executed/in"));
Process process = processBuilder.start();
int exitValue = process.waitFor();
if (exitValue != 0) {
// check for errors
new BufferedInputStream(process.getErrorStream());
throw new RuntimeException("execution of script failed!");
}
}
这有一些警告
您可以通过多种方式解决此问题,例如