实验报告 纪欣

一、题目简介

一元一次方程求解

二、源码的github链接

https://github.com/jixin1995/ceshi1/blob/master/text

https://github.com/jixin1995/ceshi1/blob/master/text1

三、所设计的模块测试用例、测试结果截图

(1)被测试的类
package junittest;
public class MyMath
{

public double oneEquation(double a,double b)
{
  //如果a=0,则防范无法求解
  if(a==0)
  {
   System.out.println("参数错误");
   throw new ArithmeticException("参数错误");
  }
  else
  {
   System.out.println("一元一次方程有解");
   return -b/a;
  }
}

public double[] twoEquation(double a,double b,double c)
{
  double[] result;
  if(a==0)
  {
   System.out.println("****************************");  
   throw new ArithmeticException("参数错误");
  }
  //有理数范围内无根
  else if(b*b-4*a*c<0)
  {
   System.out.println("****************************");  
   throw new ArithmeticException("方程在理数范围内无解");
  }
  //方程有唯一的解
  else if(b*b-4*a*c==0)
  {
   System.out.println("****************************");  
   System.out.println("方程存在唯一的解");
   result=new double[1];
   result[0]=-b/(2*a);
   return result;
  }
  //方程有两个根
  else
  {
   System.out.println("****************************");
   System.out.println("方程存在两个解");
   result=new double[2];
   //使用数组返回方程的两个根
   result[0]=(-b+Math.sqrt(b*b-4*a*c))/2/a;
   result[1]=(-b-Math.sqrt(b*b-4*a*c))/2/a;
   return result;
  }
}
}
(2)测试类
package junittest;
import static org.junit.Assert.*;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.JUnitCore;
public class MyMathTest
{
//将需要测试的类,声明成成员变量
MyMath math;
//每次运行测试方法之前都会运行该方法
@Before
public void setUp()
{
  math=new MyMath();
}
//每次运行测试用例之后都会运行该方法
@After
public void tearDown()
{
  math=null;
}

//测试一元一次方程的求解
//expected=ArithmeticException.class
//相当于断言该测试方法将会抛出ArithmeticException异常
@Test(expected=ArithmeticException.class)
public void testOneEquation()
{
  System.out.println("=================================");  
  System.out.println("=================================");
        System.out.println("测试一元一次方程求解");
  //断言该方程求解应该为-1.8
  assertEquals(math.oneEquation(5,9),-1.8,.00001);
  //断言当a==0时的情况
  assertEquals(math.oneEquation(0,3),-1);
}
//测试一元二次方程的求解
@Test
public void testTwoEquation()
{
  System.out.println("=================================");  
  System.out.println("=================================");
        System.out.println("测试一元二次方程求解");  
  double[] tmp=math.twoEquation(1,-3,2);
  //断言方程的两个解,一个为2,一个为3
  assertEquals("第一个解出错",tmp[0],2,.00001);
  assertEquals("第二个解出错",tmp[1],3,.00001);
}
//程序的入口,直接运行该测试用例
public static void main(String[] args)
{
  //运行单个的测试用例
  JUnitCore.main("junittest.MyMathTest");
}
}
(3)测试效果图

package junittest;
public class MyMath
{

public double oneEquation(double a,double b)
{
  //如果a=0,则防范无法求解
  if(a==0)
  {
   System.out.println("参数错误");
   throw new ArithmeticException("参数错误");
  }
  else
  {
   System.out.println("一元一次方程有解");
   return -b/a;
  }
}

public double[] twoEquation(double a,double b,double c)
{
  double[] result;
  if(a==0)
  {
   System.out.println("****************************");  
   throw new ArithmeticException("参数错误");
  }
  //有理数范围内无根
  else if(b*b-4*a*c<0)
  {
   System.out.println("****************************");  
   throw new ArithmeticException("方程在理数范围内无解");
  }
  //方程有唯一的解
  else if(b*b-4*a*c==0)
  {
   System.out.println("****************************");  
   System.out.println("方程存在唯一的解");
   result=new double[1];
   result[0]=-b/(2*a);
   return result;
  }
  //方程有两个根
  else
  {
   System.out.println("****************************");
   System.out.println("方程存在两个解");
   result=new double[2];
   //使用数组返回方程的两个根
   result[0]=(-b+Math.sqrt(b*b-4*a*c))/2/a;
   result[1]=(-b-Math.sqrt(b*b-4*a*c))/2/a;
   return result;
  }
}
}

package junittest;
public class HelloWorld {
//方法简单的返回字符串
public String sayHello()
{
  System.out.println("HelloWorld");
  return "Hello world";
}

//计算两个整数的和
public int add(int a,int b)
{  
  System.out.println("a+b="+(a+b));
  return a+b;
}
}

(2)测试用例类
package junittest;
import static org.junit.Assert.*;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.JUnitCore;
public class MyMathTest
{
//将需要测试的类,声明成成员变量
MyMath math;
//每次运行测试方法之前都会运行该方法
@Before
public void setUp()
{
  math=new MyMath();
}
//每次运行测试用例之后都会运行该方法
@After
public void tearDown()
{
  math=null;
}

//测试一元一次方程的求解
//expected=ArithmeticException.class
//相当于断言该测试方法将会抛出ArithmeticException异常
@Test(expected=ArithmeticException.class)
public void testOneEquation()
{
  System.out.println("=================================");  
  System.out.println("=================================");
        System.out.println("测试一元一次方程求解");
  //断言该方程求解应该为-1.8
  assertEquals(math.oneEquation(5,9),-1.8,.00001);
  //断言当a==0时的情况
  assertEquals(math.oneEquation(0,3),-1);
}
//测试一元二次方程的求解
@Test
public void testTwoEquation()
{
  System.out.println("=================================");  
  System.out.println("=================================");
        System.out.println("测试一元二次方程求解");  
  double[] tmp=math.twoEquation(1,-3,2);
  //断言方程的两个解,一个为2,一个为3
  assertEquals("第一个解出错",tmp[0],2,.00001);
  assertEquals("第二个解出错",tmp[1],3,.00001);
}
}

package junittest;
import static org.junit.Assert.*;
import org.junit.Test;
public class HelloWorldTest {
@Test
public void testSayHello()
{
  System.out.println("");
  HelloWorld hello=new HelloWorld();
  assertEquals("sayHello方法出错",hello.sayHello(),"Hello world");
}

@Test
public void testAdd()
{
  HelloWorld hello=new HelloWorld();
  assertEquals(hello.add(1, 2),3);
}
}

(3) 测试类
package junittest;
import org.junit.runner.JUnitCore;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
@RunWith(Suite.class)
@Suite.SuiteClasses({
junittest.MyMathTest.class,
junittest.HelloWorldTest.class
})

public class AllTests {
public static void main(String[] args)
{
  JUnitCore.main("junittest.AllTests");
}
}

@RunWith(Suite.class)
@Suite.SuiteClasses({
junittest.MyMathTest.class,
junittest.HelloWorldTest.class
})

(4) 测试结果效果图

四、心得体会

测试通过了,CalculatorTest2类里的parameter是每次的测试输入,result就是测试的结果。所有的测试输入和期望结果都在@Parameters标注的data函数的返回的Collection集合里,2的期望得到的平方结果值是4,0期望得到0,-3期望得到9。

把测试代码提交给JUnit框架后,框架如何来运行代码呢?答案就是——Runner。在JUnit中有很多个 Runner,他们负责调用测试代码,每一个Runner都有各自的特殊功能,要根据需要选择不同的Runner来运行测试代码。JUnit中有一个默认Runner,如果没有指定,那么系统自动使用默认 Runner来运行你的代码。这里参数化测试就没有再用默认的Runner了。

我从中学到了好多,但其中还有好多不足,还需要好好的改进。

https://github.com/jixin1995/ceshi1/blob/master/text

时间: 2024-12-29 04:25:04

实验报告 纪欣的相关文章

JAVA实验报告三:敏捷开发与XP实践

实验内容 1. XP基础 2. XP核心实践 3. 相关工具 实验步骤 (一)敏捷开发与XP 软件工程是把系统的.有序的.可量化的方法应用到软件的开发.运营和维护上的过程.软件工程包括下列领域:软件需求分析.软件设计.软件构建.软件测试和软件维护. 人们在开发.运营.维护软件的过程中有很多技术.做法.习惯和思想体系.软件工程把这些相关的技术和过程统一到一个体系中,叫“软件开发流程”.软件开发流程的目的是为了提高软件开发.运营.维护的效率,并提高软件的质量.用户满意度.可靠性和软件的可维护性. 光

Java实验一实验报告

实验一 Java开发环境的熟悉 实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用Eclipse 编辑.编译.运行.调试Java程序. 实验要求 1.没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim编辑器>课程: 2.完成实验.撰写实验报告,实验报告模板见QQ群,注意实验报告重点是运行结果,遇到的问题(工具查找,安装,使用,程序的编辑,调试,运行等).解决办法(空洞的方法如“查网络”.“问同学”.“看书”等一律得0分)以及分析(从中可以得到什么

20135231 JAVA实验报告三:敏捷开发与XP实践

---恢复内容开始--- JAVA实验报告三:敏捷开发与XP实践 20135231 何佳 实验内容 1. XP基础 2. XP核心实践 3. 相关工具 实验要求 1.没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim编辑器> 课程 2.完成实验.撰写实验报告,实验报告以博客方式发表在博客园,注意实验报告重点是运行结果,遇到的问题(工具查找,安装,使用,程序的编辑,调试,运行等).解决办法(空洞的方法如“查网络”.“问同学”.“看书”等一律得0分)以及分析(从中

实验三 敏捷开发与XP实践 实验报告

课程:Java程序设计实验   班级:1353  姓名:余佳源  学号:20135321 成绩:                           指导教师:娄嘉鹏      实验日期:2015.6.4 实验密级:无            预习程度:                   实验时间:15:30~18:00 仪器组次:  21                    必修/选修: 选修                  实验序号:3 实验名称:敏捷开发与XP实践 实验内容 1. XP

实验报告 四(未完待续)

中国人民公安大学 Chinese people' public security university 网络对抗技术 实验报告   实验四 恶意代码技术     学生姓名 宋欣雨 年级 2015 区队 二 指导教师 高见     信息技术与网络安全学院 2016年11月7日   实验任务总纲 2016-2017 学年 第 一 学期 一.实验目的 1.通过对木马的练习,使读者理解和掌握木马传播和运行的机制:通过手动删除木马,掌握检查木马和删除木马的技巧,学会防御木马的相关知识,加深对木马的安全防范

广外第二周的实验报告来这里分享一下

虽然有很多还不知道怎么改,可能也有很多测试不到的地方,但是通过这个星期我好歹了解了好多东西啊 实验报告 通过本次学习,能了解到VC6.0.是用于将已生成的C++语言源程序代码转换为计算机能读懂的目标代码,计算机用的均是二进制代码.编辑完成后它首先生成扩展名为obj的文件(程序编译后的二进制文件),若想进行之后的链接.运行过程,必须不断修改源程序文件至完全正确. 在文件→新建→源代码这里可以新建源代码:新建→打开项目或文件中可以打开以前写过的源代码或者程序:运行→编译中即把所打源文件转换为二进制代

2062326 齐力锋 实验四《Java面向对象程序设计Android开发》实验报告

北京电子科技学院(BESTI) 实 验 报 告 课程: 程序设计与数据结构  班级: 1623  姓名: 齐力锋 学号: 20162326 成绩: 指导教师: 娄嘉鹏/王志强 实验日期: 2017年5月26日 实验密级:非密级 预习程度: 优良 实验时间: 2 Hours 仪器组次: 必修/选修: 必修 实验序号: 04 实验名称:Java面向对象程序设计Android开发 实验内容 1.Android Stuidio的安装测试: 参考<Java和Android开发学习指南(第二版)(EPUBI

词法分析实验报告

词法分析实验报告 一.        实验目的 编制一个词法分析器,通过该词法分析程序的设计实例,进一步了解词法分析程序构造的一些细节. 二.        实验内容和要求 实验内容: 对字符串表示的源程序,从左到右进行扫描和分解.根据词法规则,识别出一个一个具有独立意义的单词符号,以供语法分析之用,若发现词法错误,则返回出错信息. 实验要求: 输入:源程序字符串 输出:二元组(种别,单词本身) 待分析语言的词法规则 三. 实验方法.步骤及结果测试 源程序名:压缩包文件(rar或zip)中源程序

DAY01 WINDOWS 实验报告

DAY 01   Windows 实验一 实验名称:虚拟机的安装以及win7系统的安装 实验描述:学习安装虚拟机,以及安装不同的系统,可以满足用户不同时期的不同的需求 实验步骤: 步骤1:点击开始-选择vmware文件夹-点击Vmware Workstation                             步骤2:点击文件-新建虚拟机-下一步-选择客户机操作系统和版本-选择虚拟机安装位置-设置虚拟机的处理器.内存等信息-完成虚拟机裸机的安装 步骤3:点击编辑虚拟器-双击CD/DVD(