4.12判断非三角形设计测试用例并用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号