Java求解一元二次方程+单元测试(IDEA+Junit)

介绍

环境配置

使用idea IDE 进行单元测试,首先需要安装JUnit 插件。
1.安装JUnit插件步骤
File–>settings–>Plguins–>Browse repositories–>输入JUnit–>选择JUnit Generator V2.0安装
2.设置
File–>settings–>Plguins–>勾选JunitGeneraaor V2.0 和 Junit -->重启 在这里插入图片描述
File–>settings–>other settings
在这里插入图片描述 在这里插入图片描述

Java求解一元二次方程

package WhiteBoxTesting;
/**
 * function:solve quadratic equation of one variable
 * coder:JingqiWu
 * date:2020/2/28
 */

import java.util.Scanner;

public class QuadraticEquation {

    // 求解
    public static String solveEquation(double a,double b,double c) {

        //判别式
        double delta = b * b - 4 * a * c;
        // 根
        double x1;
        double x2;

        String solution = null;

        if(a == 0) {
            if(b == 0) {
                solution = "This is not a Quadratic Equation.";
            } else {
                solution = "This is not a Quadratic Equation.Solution is x=" + -c/b;
            }

        } else{
            if(delta > 0)
            {
                x1 = (-b + Math.sqrt(delta)) / (2 * a);
                x2 = (-b - Math.sqrt(delta)) / (2 * a);
                solution= "Two real roots: x1=" + x1 + ",x2=" + x2;
            }
            else if (delta == 0)
            {
                x1 = -b/(2*a);
                solution = "Only one root:x1=x2=" + x1;
            }
            else
            {
                solution = "No real root";
            }
        }


        
        return solution;
    }

    public static void main(String[] args) {
        // print title
        System.out.println("Solve quadratic equation:ax^2+bx+c=0");

        Scanner in = new Scanner(System.in);
        System.out.print("Enter a:");//prompt
        double a = in.nextDouble();
        System.out.print("Enter b:");//prompt
        double b = in.nextDouble();
        System.out.print("Enter c:");//prompt
        double c = in.nextDouble();

        // print equation
        System.out.printf("Equation:%fx^2+%fx+%f=0\n",a,b,c);
        // print solution
        System.out.println(solveEquation(a,b,c));
    }
}

测试用例

  1. a=0, b=0, c=0 This is not a Quadratic Equation.
  2. a=0, b=3, c=0 This is not a Quadratic Equation.Solution is x=-0.0
  3. a=0, b=4, c=-8.4 This is not a Quadratic Equation.Solution is x=2.1
  4. a=-2, b=4, c=-2 Only one root:x1=x2=1.0
  5. a=1, b=-5, c=6 Two real roots: x1=3.0,x2=2.0
  6. a=4.7, b=2.5, c=1.3 No real root

完成单元测试

建目录test>>右键>>Mark directory as >> test resourse root
右键>>create a test>>设置要测试的方法


import WhiteBoxTesting.QuadraticEquation;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;

import java.util.Arrays;
import java.util.Collection;
/**
 * QuadraticEquation.solveEquation Tester.
 *
 * @author Jingqi Wu
 * @since 2020.3.4
 * @version 1.0
 */

/*
    @BeforeClass 全局只会执行一次,而且是第一个运行
    @Before 在测试方法运行之前运行
    @Test 测试方法
    @After 在测试方法运行之后允许
    @AfterClass 全局只会执行一次,而且是最后一个运行
    @Ignore 忽略此方法
*/

@RunWith(Parameterized.class)
public class QuadraticEquationTest {

    private double a;
    private double b;
    private double c;
    private String expected;

    public QuadraticEquationTest(double a, double b, double c, String expected) {
        this.a = a;
        this.b = b;
        this.c = c;
        this.expected = expected;
    }

    @Parameterized.Parameters
    public static Collection parameter() {
        return Arrays.asList(new Object[][]{
                {0,  0, 0,"This is not a Quadratic Equation."},
                {0,  3, 0,"This is not a Quadratic Equation.Solution is x=-0.0"},
                {0,  4, -8.4,"This is not a Quadratic Equation.Solution is x=2.1"},
                {-2, 4, -2, "Only one root:x1=x2=1.0"},
                {1, -5, 6, "Two real roots: x1=3.0,x2=2.0"},
                {4.7, 2.5, 1.3, "No real root"}
        });
    }

    /**
     * Method: solveEquation(double a, double b, double c)
     */
    @Test
    public void testSolveEquation() throws Exception {
        System.out.println("a=" + a + ", b=" + b + ", c=" + c + ", expected:" + expected);
        String result;
        result = QuadraticEquation.solveEquation(a, b, c);
        Assert.assertEquals(expected, result);
    }


}

TestRunner.java


package com.java.test;


import org.junit.runner.JUnitCore;
import org.junit.runner.Result;
import org.junit.runner.notification.Failure;

public class TestRunner {

    public static void main(String[] args) {

        System.out.println("SolveEquationTest");
        Result result1 = JUnitCore.runClasses(QuadraticEquationTest.class);
        for (Failure failure : result1.getFailures()) {
            System.out.println(failure.toString());
        }
        System.out.println(result1.wasSuccessful());
    }

}


# 运行TestRunner
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200304191017606.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM5NzUzNzc4,size_16,color_FFFFFF,t_70)
# 参考资料
链接:https://blog.csdn.net/baidu_34045013/article/details/81053444
发布了22 篇原创文章 · 获赞 7 · 访问量 754

猜你喜欢

转载自blog.csdn.net/qq_39753778/article/details/104641368