4.15日总结
今天做junit测试中的判断非三角形设计测试用例
编写程序判断非三角形,等腰三角形,等边三角形,直角三角形,钝角三角形,锐角三角形,设计测试用例并用JUnit进行测试。
三角形判断程序
package org.example;
public class TriangleTypeChecker {
public static String checkTriangleType(int a, int b, int c) {
if (a <= 0 || b <= 0 || c <= 0) {
return "非三角形";
}
// 检查是否能构成三角形
if (a + b <= c || a + c <= b || b + c <= a) {
return "非三角形";
}
// 检查等边三角形
if (a == b && b == c) {
return "等边三角形";
}
// 检查等腰三角形
if (a == b || b == c || a == c) {
return "等腰三角形";
}
// 检查直角三角形
if (isRightTriangle(a, b, c)) {
return "直角三角形";
}
// 检查钝角三角形
if (isObtuseTriangle(a, b, c)) {
return "钝角三角形";
}
// 剩下的就是锐角三角形
return "锐角三角形";
}
private static boolean isRightTriangle(int a, int b, int c) {
int max = Math.max(Math.max(a, b), c);
int min = Math.min(Math.min(a, b), c);
int mid = a + b + c - max - min;
return min * min + mid * mid == max * max;
}
private static boolean isObtuseTriangle(int a, int b, int c) {
int max = Math.max(Math.max(a, b), c);
int min = Math.min(Math.min(a, b), c);
int mid = a + b + c - max - min;
return min * min + mid * mid < max * max;
}
}
测试类
package org.example;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.CsvSource;
import static org.junit.jupiter.api.Assertions.*;
class TriangleTypeCheckerTest {
@Test
void testInvalidTriangles() {
assertEquals("非三角形", TriangleTypeChecker.checkTriangleType(0, 1, 2));
assertEquals("非三角形", TriangleTypeChecker.checkTriangleType(-1, 2, 3));
assertEquals("非三角形", TriangleTypeChecker.checkTriangleType(1, 2, 3));
assertEquals("非三角形", TriangleTypeChecker.checkTriangleType(1, 1, 2));
}
@ParameterizedTest
@CsvSource({
"3, 3, 3, '等边三角形'",
"5, 5, 5, '等边三角形'",
"10, 10, 10, '等边三角形'"
})
void testEquilateralTriangles(int a, int b, int c, String expected) {
assertEquals(expected, TriangleTypeChecker.checkTriangleType(a, b, c));
}
@ParameterizedTest
@CsvSource({
"3, 3, 4, '等腰三角形'",
"5, 5, 8, '等腰三角形'",
"7, 10, 10, '等腰三角形'",
"6, 8, 6, '等腰三角形'"
})
void testIsoscelesTriangles(int a, int b, int c, String expected) {
assertEquals(expected, TriangleTypeChecker.checkTriangleType(a, b, c));
}
@ParameterizedTest
@CsvSource({
"3, 4, 5, '直角三角形'",
"5, 12, 13, '直角三角形'",
"8, 15, 17, '直角三角形'",
"7, 24, 25, '直角三角形'"
})
void testRightTriangles(int a, int b, int c, String expected) {
assertEquals(expected, TriangleTypeChecker.checkTriangleType(a, b, c));
}
@ParameterizedTest
@CsvSource({
"2, 3, 4, '钝角三角形'",
"5, 7, 9, '钝角三角形'",
"6, 8, 11, '钝角三角形'"
})
void testObtuseTriangles(int a, int b, int c, String expected) {
assertEquals(expected, TriangleTypeChecker.checkTriangleType(a, b, c));
}
@ParameterizedTest
@CsvSource({
"5, 6, 7, '锐角三角形'",
"7, 8, 9, '锐角三角形'",
"10, 11, 12, '锐角三角形'"
})
void testAcuteTriangles(int a, int b, int c, String expected) {
assertEquals(expected, TriangleTypeChecker.checkTriangleType(a, b, c));
}
}
测试用例设计
无效输入测试:测试边长为0或负数的三角形
非三角形测试:测试不满足三角形两边之和大于第三边的组合
等边三角形测试:三边相等的三角形
等腰三角形测试:两边相等的三角形
直角三角形测试:满足勾股定理的三角形
钝角三角形测试:最大边的平方大于其他两边平方和的三角形
锐角三角形测试:最大边的平方小于其他两边平方和的三角形
边界值测试:测试接近边界值的三角形边长组合



浙公网安备 33010602011771号