如何显示服务运行测试是否为绿色

时间:2017-04-07 14:57:04

标签: java junit

我在file.bat 3运行中有5个服务,2个已停止。我希望有3个成功的绿色测试和2个红色

我认为问题出在我的var ligne

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;


public class Cmd {

  static String       a      = null;
  static String       ligne  = "";
  public final String output = null;

  static String       CHEMIN = "vvvvvvvvvv";

  private static BufferedReader getOutput(Process p)
  {
    return new BufferedReader(new InputStreamReader(p.getInputStream()));
  }

  private static BufferedReader getError(Process p)
  {
    return new BufferedReader(new InputStreamReader(p.getErrorStream()));
  }

  static public String Stateprocess()
  {
    if (ligne.contains("RUNNING")) {
      a = "RUNNING";
      System.out.println("ok");
    } else {
      a = "STOPPED";
      System.out.println("no");
    }

    return a;
  }


  public boolean ping(String CHEMIN)
  {

    int exitValue = 1;

    try {

      String[] commande = {"cmd.exe", "/C", CHEMIN + "test-sc.bat"};
      Process p = Runtime.getRuntime()
                         .exec(commande);
      BufferedReader output = getOutput(p);
      BufferedReader error = getError(p);


      while ((ligne = output.readLine()) != null) {
        System.out.println(ligne);
        // System.out.println(ligne.contains("STOPPED"));
      }

      while ((ligne = error.readLine()) != null) {
        System.out.println(ligne);
      }

      exitValue = p.waitFor();

    }


    catch (IOException e) {
      e.printStackTrace();
    } catch (InterruptedException e) {
      e.printStackTrace();
    }

    return exitValue == 0;
  }

  public static void main(String[] args)
  {
    Cmd exemple = new Cmd();
    boolean trouve = exemple.ping(CHEMIN);
    System.out.println(trouve);
  }
}

1 个答案:

答案 0 :(得分:0)

此代码保持从out和err流中读取,直到到达流的末尾。但这会让你的java代码等到进程完成它的任务。

所以,如果这是你想要的,我建议移动声明

  exitValue = p.waitFor();

在你读取流的两个while循环之前。

这可以让您确保两个流都完全写入。