为 CPU 个使用程序编写 junit 测试用例

Writing junit test case for CPU usage program

我有一个 java 程序,它计算 CPU 它所在的环境(单机)的使用情况 运行。为此,它最初创建一个进程,然后根据输入流 reader.

计算使用情况

在这种情况下,什么是成功和失败的测试用例。

我是 junit 的新手,在编写测试用例方面,我们将不胜感激。

将您的问题分解为可测试的单元。在您的情况下,您可以测试解析器,与运行外部进程的代码分开。所以你测试两件事:

  1. 测试您的解析器是否为不同的输入返回正确的加载值
  2. 测试你的代码是运行正确的过程

您没有测试的是,您的代码针对当前情况返回了正确的负载值,因为:

  • 你不知道哪个值是正确的
  • 您不需要验证您调用的程序是否正常工作,但您想测试您的代码

结果类似于:

public void test45PercentLoad() {
  LoadParser p = new LoadParser();
  InputStream in = getClass().getResourceAsStream("cpuUsageSample45percentLoad.txt");
  p.read(in);
  assertEquals(45, p.getLoadPercentage());
}

public void testProgramCall() {
  Process p = MachineLoadMeter.callExternalProgram();
  assertEquals("process is terminated", !p.isAlive());
  assertEquals("exit value 0 means some program was run", 0, p.exitValue());
  // maybe test the process output for some string patterns
  // that are always present, to check that the correct external program
  // was run
}

/**
 * Run everything together, but only test basics.
 */
public void testMachineLoadMeter() {
  int v = MachineLoadMeter.getCurrentLoadPercentage();
  assertTrue(v >= 0 && v <= 100);
}