为 CPU 个使用程序编写 junit 测试用例
Writing junit test case for CPU usage program
我有一个 java 程序,它计算 CPU 它所在的环境(单机)的使用情况 运行。为此,它最初创建一个进程,然后根据输入流 reader.
计算使用情况
在这种情况下,什么是成功和失败的测试用例。
我是 junit 的新手,在编写测试用例方面,我们将不胜感激。
将您的问题分解为可测试的单元。在您的情况下,您可以测试解析器,与运行外部进程的代码分开。所以你测试两件事:
- 测试您的解析器是否为不同的输入返回正确的加载值
- 测试你的代码是运行正确的过程
您没有测试的是,您的代码针对当前情况返回了正确的负载值,因为:
- 你不知道哪个值是正确的
- 您不需要验证您调用的程序是否正常工作,但您想测试您的代码
结果类似于:
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);
}
我有一个 java 程序,它计算 CPU 它所在的环境(单机)的使用情况 运行。为此,它最初创建一个进程,然后根据输入流 reader.
计算使用情况在这种情况下,什么是成功和失败的测试用例。
我是 junit 的新手,在编写测试用例方面,我们将不胜感激。
将您的问题分解为可测试的单元。在您的情况下,您可以测试解析器,与运行外部进程的代码分开。所以你测试两件事:
- 测试您的解析器是否为不同的输入返回正确的加载值
- 测试你的代码是运行正确的过程
您没有测试的是,您的代码针对当前情况返回了正确的负载值,因为:
- 你不知道哪个值是正确的
- 您不需要验证您调用的程序是否正常工作,但您想测试您的代码
结果类似于:
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);
}