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或负数的三角形

​非三角形测试​:测试不满足三角形两边之和大于第三边的组合

​等边三角形测试​:三边相等的三角形

​等腰三角形测试​:两边相等的三角形

​直角三角形测试​:满足勾股定理的三角形

​钝角三角形测试​:最大边的平方大于其他两边平方和的三角形

​锐角三角形测试​:最大边的平方小于其他两边平方和的三角形

​边界值测试​:测试接近边界值的三角形边长组合

 

posted @ 2025-06-19 09:52  Mini-Q  阅读(11)  评论(0)    收藏  举报