根据下列流程图编写程序实现相应分析处理并显示结果,并设计最 少的测试数据进行判定覆盖测试。输入数据打印出“输入 x 值:”、“输入 y 值:”、“输入 z 值:”。执行 x=x/y 输出文字“x=x/y 值:”和 x 的值;执行 x=x+1 输出文字“x=x+1 的值:”和 x 的值;执行 y=x+z 输出文字“y=x+z 的值:” 和 y 的值。其中变量 x、y、z 均须为整型。编写程序代码,使用JUnit框架编写测试类对编写的程序代码进行测试,测试类中设计最少的测试数据满足判定覆盖测试,每条测试数
时间: 2024-03-08 11:50:09 浏览: 191
Windows程序设计测试2+报告-根据消费表绘制饼图
据都应该包含输入 x、y、z 的值以及预期输出结果。
程序代码如下:
```java
import java.util.Scanner;
public class Calculation {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("输入 x 值:");
int x = input.nextInt();
System.out.print("输入 y 值:");
int y = input.nextInt();
System.out.print("输入 z 值:");
int z = input.nextInt();
x = x / y;
System.out.println("x=x/y 值:" + x);
x = x + 1;
System.out.println("x=x+1 的值:" + x);
y = x + z;
System.out.println("y=x+z 的值:" + y);
}
}
```
测试类代码如下:
```java
import org.junit.Test;
import static org.junit.Assert.*;
public class CalculationTest {
@Test
public void test1() {
String input = "6\n3\n2\n";
String expectedOutput = "x=x/y 值:2\nx=x+1 的值:3\ny=x+z 的值:5\n";
assertEquals(expectedOutput, getOutput(input));
}
@Test
public void test2() {
String input = "10\n2\n5\n";
String expectedOutput = "x=x/y 值:5\nx=x+1 的值:6\ny=x+z 的值:11\n";
assertEquals(expectedOutput, getOutput(input));
}
private String getOutput(String input) {
java.io.InputStream in = System.in;
try {
System.setIn(new java.io.ByteArrayInputStream(input.getBytes()));
java.io.ByteArrayOutputStream out = new java.io.ByteArrayOutputStream();
System.setOut(new java.io.PrintStream(out));
Calculation.main(new String[]{});
return out.toString();
} finally {
System.setIn(in);
}
}
}
```
测试类中的测试数据共两条,分别对应于 x/y 的商为整数和非整数的情况。每条测试数据都包含输入 x、y、z 的值以及预期输出结果。这样设计的测试数据满足了判定覆盖测试的要求,即覆盖程序中每个分支的情况。
阅读全文