介绍
环境配置
使用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));
}
}
测试用例
- a=0, b=0, c=0 This is not a Quadratic Equation.
- a=0, b=3, c=0 This is not a Quadratic Equation.Solution is x=-0.0
- a=0, b=4, c=-8.4 This is not a Quadratic Equation.Solution is x=2.1
- a=-2, b=4, c=-2 Only one root:x1=x2=1.0
- a=1, b=-5, c=6 Two real roots: x1=3.0,x2=2.0
- 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