尝试编写两个JUnit参数化测试对判断三角形类型的方法进行测试,一个使用异常断言测试抛异常的情况,另一个测试返回值是否符合预期。
时间: 2024-03-18 11:41:55 浏览: 158
软件测试三角形类型判断程序实验报告.docx
好的,假设我们有一个判断三角形类型的方法 `Triangle.getType(int a, int b, int c)`,可以根据三角形三边的长度判断其类型,代码如下:
```java
public class Triangle {
public static String getType(int a, int b, int c) {
if (a <= 0 || b <= 0 || c <= 0) {
throw new IllegalArgumentException("边长不能为负数或零");
}
if (a + b <= c || a + c <= b || b + c <= a) {
return "非三角形";
}
if (a == b && b == c) {
return "等边三角形";
}
if (a == b || a == c || b == c) {
return "等腰三角形";
}
return "一般三角形";
}
}
```
现在我们来编写两个参数化测试:
1. 使用异常断言测试抛异常的情况:
```java
@RunWith(Parameterized.class)
public class TriangleTest {
@Parameterized.Parameters
public static Collection<Object[]> data() {
return Arrays.asList(new Object[][]{
{0, 1, 2},
{1, 0, 2},
{1, 2, 0},
{-1, 2, 3},
{1, -2, 3},
{1, 2, -3},
});
}
private int a;
private int b;
private int c;
public TriangleTest(int a, int b, int c) {
this.a = a;
this.b = b;
this.c = c;
}
@Test(expected = IllegalArgumentException.class)
public void testGetTypeWithNegativeOrZeroSide() {
Triangle.getType(a, b, c);
}
}
```
在这个测试中,我们使用了 JUnit 的参数化测试功能,将多组输入数据传入测试方法中进行测试。在这里,我们对三角形的边长进行了非法的赋值,期望方法会抛出 IllegalArgumentException 异常。
2. 测试返回值是否符合预期:
```java
@RunWith(Parameterized.class)
public class TriangleTest {
@Parameterized.Parameters
public static Collection<Object[]> data() {
return Arrays.asList(new Object[][]{
{3, 3, 3, "等边三角形"},
{3, 4, 4, "等腰三角形"},
{3, 4, 5, "一般三角形"},
{1, 2, 3, "非三角形"}
});
}
private int a;
private int b;
private int c;
private String expectedType;
public TriangleTest(int a, int b, int c, String expectedType) {
this.a = a;
this.b = b;
this.c = c;
this.expectedType = expectedType;
}
@Test
public void testGetType() {
String type = Triangle.getType(a, b, c);
assertEquals(expectedType, type);
}
}
```
在这个测试中,我们同样使用了 JUnit 的参数化测试功能,将多组输入数据传入测试方法中进行测试。在这里,我们对三角形的边长进行了合法的赋值,期望方法会返回预期的结果。我们使用了 assertEquals 方法来比较实际结果和预期结果是否相等。
阅读全文