1.写一个独立的成绩检验类,能根据输入判定成绩的类别 小于40重修,40-60补考,60-70及格,70-80中等,80-90良好,90-100优秀,大于100小于0非法输入 2.使用白盒和黑盒测试方法设计出对应的测试用例,白盒的条件组合覆盖和黑盒的等价类和边界方法。 3.使用Junit的参数化测试套路实现这个类功能的测试
时间: 2023-06-07 18:08:59 浏览: 60
抱歉,我可以回答你的第一个问题。以下是独立的成绩检验类的代码:
```
public class GradeChecker {
public String checkGrade(double score) {
if(score < 0 || score > 100) {
return "非法输入";
}
else if(score >= 90) {
return "优秀";
}
else if(score >= 80) {
return "良好";
}
else if(score >= 70) {
return "中等";
}
else if(score >= 60) {
return "及格";
}
else if(score >= 40) {
return "补考";
}
else {
return "重修";
}
}
}
```
以下是白盒和黑盒测试方法设计的测试用例:
白盒测试:
1. 各个分数段都测试一遍,例如:-1,0,39,40,50,60,70,80,90,100,101。
2. 对于分数段在边界上的情况,例如:39.5,40.5,60.5,70.5,80.5,90.5。
3. 对于分数段之间的特殊情况,例如:40,60,70,80,90。
4. 对于负数和大于100的情况都测试一遍,例如:-10,200,1000。
黑盒测试:
1. 针对等价类测试,例如:-10,50,80,90,101。
2. 边界值测试,例如:-1,0,1,39,40,41,59,60,61,69,70,71,79,80,81,89,90,91,99,100,101。
以下是使用Junit的参数化测试套路实现的测试:
```
import static org.junit.Assert.assertEquals;
import java.util.Arrays;
import java.util.Collection;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
@RunWith(Parameterized.class)
public class GradeCheckerTest {
private double input;
private String expectedOutput;
private GradeChecker gradeChecker;
@Before
public void setUp() {
gradeChecker = new GradeChecker();
}
public GradeCheckerTest(double input, String expectedOutput) {
this.input = input;
this.expectedOutput = expectedOutput;
}
@Parameters
public static Collection<Object[]> data() {
return Arrays.asList(new Object[][] {
{ -10, "非法输入" },
{ -1, "非法输入" },
{ 0, "重修" },
{ 1, "重修" },
{ 39, "重修" },
{ 40, "补考" },
{ 41, "补考" },
{ 59, "补考" },
{ 60, "及格" },
{ 61, "及格" },
{ 69, "及格" },
{ 70, "中等" },
{ 71, "中等" },
{ 79, "中等" },
{ 80, "良好" },
{ 81, "良好" },
{ 89, "良好" },
{ 90, "优秀" },
{ 91, "优秀" },
{ 99, "优秀" },
{ 100, "优秀" },
{ 101, "非法输入" },
{ 200, "非法输入" },
});
}
@Test
public void test() {
assertEquals(expectedOutput, gradeChecker.checkGrade(input));
}
}
```