JUnit 4 单元测试

Individual Project

          ——JUnit 4 单元测试



  学习到JUnit单元测试,我拿来测试之前写过的一个计算器(两个依存类:Calc.java CalcFunction.java)。代码已放到github中。

贴出部分代码:

 1 public class Calc extends javax.swing.JFrame{
 2
 3         public Calc() {
 4             initComponents();
 5         }
 6
 7         private void initComponents() {
 8             java.awt.GridBagConstraints gridBagConstraints;
 9
10             setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
11             setTitle("\u8ba1\u7b97\u5668");
12             setBounds(new java.awt.Rectangle(500, 50, 0, 0));
13             setResizable(false);
14
15                         ···//界面布局
16
17                 }
18                 //主要监听
19         ActionListener listenerEquals = new ActionListener() {
20             public void actionPerformed(ActionEvent e) {
21                 formulaStand.setText(edit + "=");
22                 hasPoint = false;
23                 String result;
24                 try {
25                     result = CalcFunction.Evaluate(edit+"=");
26                 } catch (Exception e1) {
27                     result = "syntax error";
28                 }
29                 if (Double.parseDouble(result)%1 == 0) {
30                     editStand.setText(String.valueOf((int)Double.parseDouble((result))));
31                 }else{
32                     editStand.setText(String.valueOf((float)Double.parseDouble((result))));
33                 }
34                 edit = "0";
35             }
36         };
37 }

Calc.java

用来测试的类

CalcFunction.java

  下面进行单元测试

首先要在该工程下导入JUnit 具体做法:Build Path -> Config Build Path ... -> Add Libraries ... 选中JUnit Next-> 选择JUnit 4 Finished

添加完成

创建测试用例  

new -> Java Test Case  Name:CalcFunctionTest Next-> 选择要测试的方法

自动生成一个测试类CalcFunctionTest,里面包含一些空的测试用例,@Test 注解的。只需要将这些测试用例稍作修改即可使用。完整的CalcFunctionTest代码如下:

 1 package com.school.indivodial;
 2
 3 import static org.junit.Assert.*;
 4
 5 import org.junit.Before;
 6 import org.junit.Test;
 7
 8 /**
 9  *
10  * @author lendoon
11  *CalcFunction类是Calc类的功能类,
12  *Calc的UI输入中缀表达式调用CalcFunction的静态Evaluate方法计算返回结果
13  */
14 public class CalcFunctionTest {
15
16     @Test
17     public void testEvaluate_basic() throws Exception {
18         Double expectedAnswer = Double.valueOf("90");
19         Double actualAnswer = Double.valueOf(CalcFunction.Evaluate("100-(22+6×3)÷4="));
20         assertEquals(expectedAnswer, actualAnswer);
21     }
22
23     @Test
24     public void testEvaluate_pow() throws Exception{
25         Double expectedAnswer = Double.valueOf("1024");
26         Double actualAnswer = Double.valueOf(CalcFunction.Evaluate("2^10="));
27         assertEquals(expectedAnswer, actualAnswer);
28     }
29
30     @Test
31     public void testEvaluate_sqrt() throws Exception{
32         Double expectedAnswer = Double.valueOf("8");
33         Double actualAnswer = Double.valueOf(CalcFunction.Evaluate("√64="));
34         assertEquals(expectedAnswer, actualAnswer);
35     }
36
37     @Test
38     public void testEvaluate_cos() throws Exception{
39         Double expectedAnswer = Double.valueOf("1");
40         Double actualAnswer = Double.valueOf(CalcFunction.Evaluate("COS(0)="));
41         assertEquals(expectedAnswer, actualAnswer);
42     }
43 }

CalcFunctionTest.java

Run As -> JUnit Test,结果如图:

测试显示绿色的对号是通过的,显示蓝色叉号的,表示没通过failure。如图中的testEvaluate_cos测试方法。

运行失败,进度条会变成红褐色的,失败有两种情况:

处理结果与预期的有偏差(failure) 和  处理结果时,则直接抛出了异常——测试错误(error)

如图:测试失败的两种情况 

全部测试成功时,进度条是绿色的:

JUnit 最佳实践测试任何可能的错误。单元测试不是用来证明您是对的,而是为了证明您没有错。

时间: 2024-12-09 20:03:44

JUnit 4 单元测试的相关文章

JUnit + Mockito 单元测试(二)

JUnit 是单元测试框架.Mockito 与 JUnit 不同,并不是单元测试框架(这方面 JUnit 已经足够好了),它是用于生成模拟对象或者直接点说,就是"假对象"的工具.两者定位不同,所以一般通常的做法就是联合 JUnit + Mockito 来进行测试. 入门 首先是配置 Mock 对象,看看例子怎么写的. [java] view plain copy List mock = mock( List.class ); when( mock.get(0) ).thenReturn

按照所给的程序流程图,分别写出语句覆盖、分支覆盖的测试用例,以及它所覆盖的路径,根据程序流程图,写出代码,用JUnit生成单元测试,并利用前面设计的测试用例进行测试。

语句覆盖:路径:abc ,测试用例:x=3,y=2 分支覆盖:路径:aeg ,测试用例:x=4,y=-1 /** * 2016-04-09 * @author 吴思婷 * DoWork类用来根据程序流程图,写出代码(定义一个类和方法来实现) */ public class DoWork { public void doWork(int x,int y){ int k=0,j=0; if((x<4 || y>0)&&(y>1)){ y=y+1; } else { if(x&

spring junit 做单元测试,报 Failed to load ApplicationContext 错误

spring junit 做单元测试,报 Failed to load ApplicationContext 错误. 查找了好一会,最后发现.@ContextConfiguration(locations = { "classpath:/spring/applicationContext.xml","classpath:/spring/app-config.xml", …… 改成 @ContextConfiguration(locations = { "c

使用spring配合Junit进行单元测试的总结

最近公司的项目和自己的项目中都用到了spring集成junit进行单元测试,总结一下几种基本的用法: 1.直接对spring中注入的bean进行测试(以DAO为例): 在测试类上添加@RunWith注解指定使用springJunit的测试运行器,@ContextConfiguration注解指定测试用的spring配置文件的位置 之后我们就可以注入我们需要测试的bean进行测试,Junit在运行测试之前会先解析spring的配置文件,初始化spring中配置的bean @RunWith(Spri

Junit Java单元测试

Junit是一种java单元测试的工具,让我们的测试提高效率 入门篇 我们先来看一个测试加法add的例子 先创建一个AddOperation的类(我们要测试的类) package work; publicclass AddOperation { publicint add(int x,int y){ return x+y; } } 给该类添加测试类 详细请看图 选择你要测试的类 package work; importstatic org.junit.Assert.*; import org.j

Android中如何使用JUnit进行单元测试 eclipse

Android中如何使用JUnit进行单元测试 在我们日常开发android app的时候,需要不断地进行测试,所以使用JUnit测试框架显得格外重要,学会JUnit可以加快应用的开发周期. Android中建立JUnit测试环境有以下两种方法. 一.直接在需要被测试的工程中新建测试类 集成步骤: 1.在androidManifest.xml文件中添加以下代码: <instrumentation android:name="android.test.InstrumentationTestR

Spring(3)—— Junit框架单元测试

Junit主要用于单元测试,即白盒测试.它是一个开源的由JAVA开发的一个用于测试的框架. Junit的几个基本概念:TestCase,TestSuite,TestFixtrue TestCase:代表一个测试用例,每一个TestCase实例都对应一个测试,这个测试通过这个TestCase实例的名字标志,以便在测试结果中指明哪个测试出了问题.TestCase继承自Assert,因此可以实现各种断言. TestSuite:代表需要测试的一组测试用例,也是测试用例的集合. TestFixtrue:代

Junit(3)JUnit和单元测试入门简介

1.几个相关的概念 白盒测试--把测试对象看作一个打开的盒子,程序内部的逻辑结构和其他信息对测试人员是公开的. 回归测试--软件或环境的修复或更正后的"再测试",自动测试工具对这类测试尤其有用. 单元测试--是最小粒度的测试,以测试某个功能或代码块.一般由程序员来做,因为它需要知道内部程序设计和编码的细节. JUnit --是一个开发源代码的Java测试框架,用于编写和运行可重复的测试.他是用于单元测试框架体系xUnit的一个实例(用于java语言).主要用于白盒测试,回归测试. 2.

[转][Java]使用Spring配合Junit进行单元测试的总结

http://www.51testing.com/html/14/n-1408814.html 1.直接对spring中注入的bean进行测试(以DAO为例): 在测试类上添加@RunWith注解指定使用springJunit的测试运行器,@ContextConfiguration注解指定测试用的spring配置文件的位置 之后我们就可以注入我们需要测试的bean进行测试,Junit在运行测试之前会先解析spring的配置文件,初始化spring中配置的bean 1 @RunWith(Sprin