201303014111高德建

  1. 编写目标类源代码

package com.mengdd.junit;

public class Calculator

{

public int add(int a, int b)

{

return a + b;

}

public int subtract(int a, int b)

{

return a - b;

}

public int multiply(int a, int b)

{

return a * b;

}

public int divide(int a, int b)

{

return a / b;

}

}

  1. 添加JUnit库

然后为了使用JUnit,需要加入库:

  右键选择项目Properties->左侧Java Build Path->标签Libraries->Add Library...

弹出的对话框中选JUnit,然后Next,再选择JUnit 3或者JUnit 4.

本文示例选择JUnit 3。

  1. 创建测试类

这里需要注意以下几点:

  1.使用JUnit的最佳实践:源代码和测试代码需要分开。

  所以可以新建一个名叫test的source folder,用于存放测试类源代码。这样在发布程序的时候测试类的程序就可以丢掉了。

  但是这两个文件夹中的类编译出的class文件都会在同一个bin文件夹中。

  2.测试类和目标源代码的类应该位于同一个包下面,即它们的包名应该一样。  这样测试类中就不必导入源代码所在的包,因为它们位于同一个包下面。

  3.测试类的命名规则:

  在要测试的类名之前或之后加上Test。

此步骤完成后项目目录如下:

  1. 测试类代码编写

测试类必须继承于TestCase类。

TestCase文档说明:

public abstract class TestCase

extends Assert

implements Test

A test case defines the fixture to run multiple tests.  To define a test case

1) implement a subclass of TestCase

2) define instance variables that store the state of the fixture

3) initialize the fixture state by overriding setup

4) clean-up after a test by overriding tearDown.

Each test runs in its own fixture so there can be no side effects among test runs.

对于测试类中方法的要求:

在JUnit 3.8中,测试方法需要满足如下原则:

  1.public的。

  2.void的。

   3.无方法参数。    

4.方法名称必须以test开头。 (它通过反射找出所有方法,然后找出以test开头的方法)。

Test Case之间一定要保持完全的独立性,不允许出现任何的依赖关系。

删除一些方法后不会对其他的方法产生任何的影响。

我们不能依赖于测试方法的执行顺序。

综上,编写代码如下:

package com.mengdd.junit;

import junit.framework.Assert;

import junit.framework.TestCase;

public class CalculatorTest extends TestCase

{

public void testAdd()

{

Calculator calculator = new Calculator();

int result = calculator.add(1, 2);

// 判断方法的返回结果

Assert.assertEquals(3, result);// 第一个参数是期望值,第二个参数是要验证的值

}

public void testSubtract()

{

Calculator calculator = new Calculator();

int result = calculator.subtract(1, 2);

// 判断方法的返回结果

Assert.assertEquals(-1, result);// 第一个参数是期望值,第二个参数是要验证的值

}

public void testMultiply()

{

Calculator calculator = new Calculator();

int result = calculator.multiply(2, 3);

// 判断方法的返回结果

Assert.assertEquals(6, result);// 第一个参数是期望值,第二个参数是要验证的值

}

public void testDivide()

{

Calculator calculator = new Calculator();

int result = calculator.divide(12, 3);

// 判断方法的返回结果

Assert.assertEquals(4, result);// 第一个参数是期望值,第二个参数是要验证的值

}

}

运行一下:右键选择该类,Run As->JUnit Test

JUnit的口号:Keep the bar green to keep the code clean.

  1. 代码重构:setUp()方法的使用

有一个原则:DRY(Don’t Repeat Yourself)

所以对代码进行重构,将重复的生成对象的部分放在setUp()方法中。

(重写的时候将protected变为public,继承的时候扩大访问范围是没有问题的。)    先进行一个方法的测试测试:    

在CalculatorTest类中加入代码如下:

@Override

public void setUp() throws Exception

{

System.out.println("set up");

}

@Override

public void tearDown() throws Exception

{

System.out.println("tear down");

}

再次运行后发现Console中输出如下:

说明这两个方法执行了多次。

在每个测试用例之前执行setUp(),每个测试用例执行之后,tearDown()会执行。

即对于每个测试用例,执行顺序为:

1.setUp()

2.testXXX()

3.tearDown()

重构:使用成员变量生成对象(为了能在每个方法中都用到),将生成对象的语句放在setUp()中,注意这里为每一个测试用例都会生成新的对象。    

重构后代码如下:

package com.mengdd.junit;

import junit.framework.Assert;

import junit.framework.TestCase;

public class CalculatorTest extends TestCase

{

private Calculator calculator = null;

@Override

public void setUp() throws Exception

{

System.out.println("set up");

// 生成成员变量的实例

calculator = new Calculator();

System.out.println(calculator);

}

@Override

public void tearDown() throws Exception

{

System.out.println("tear down");

}

public void testAdd()

{

int result = calculator.add(1, 2);

// 判断方法的返回结果

Assert.assertEquals(3, result);// 第一个参数是期望值,第二个参数是要验证的值

}

public void testSubtract()

{

int result = calculator.subtract(1, 2);

// 判断方法的返回结果

Assert.assertEquals(-1, result);// 第一个参数是期望值,第二个参数是要验证的值

}

public void testMultiply()

{

int result = calculator.multiply(2, 3);

// 判断方法的返回结果

Assert.assertEquals(6, result);// 第一个参数是期望值,第二个参数是要验证的值

}

public void testDivide()

{

int result = calculator.divide(12, 3);

// 判断方法的返回结果

Assert.assertEquals(4, result);// 第一个参数是期望值,第二个参数是要验证的值

}

}

运行后控制台输出:

说明每一个测试的方法前后都会有setUp()和tearDown()方法的调用,所以每次生成的都是一个新的对象,各个方法之间没有干扰。

https://github.com/gaodejian/gaodejian/commit/a953bfbe1f3f533f60a6e1bae61e9a49275778eb

时间: 2024-10-01 03:55:10

201303014111高德建的相关文章

怎么把百度(或高德)地图上查询的电话批量导出

怎么把百度地图上查询的电话批量导出呢? 怎么把高德地图上查询的电话批量导出呢? 这是很多做销售工作的业界精英们 迫切需要解决的问题. 因为他们需要大数据,作为他们微信销售,短信销售,电话销售的资源. 笔者经过一段时间的琢磨,经过一年多时间的反复测试,做出了导出高德地图的商家电话的软件. 界面尽量做到简洁,操作简单: 首先,选择需要采集的省份,城市: 输入需要采集的关键词,比如:汽车维修,宠物店,美容店.电动车 点击按钮[开始处理],系统将开始采集并处理采集到的商家数据,汇总成为一个EXCEL文件

高德LBS+的勾搭之下 58到家劈腿阿里?

昨日,高德与58到家宣布达成全面合作,这是既神州租车之后,高德LBS+平台引入的又一巨头明星级合作伙伴.如今看来,去年曾宣布放弃O2O的高德,实际却在变向加大对O2O市场的投入,竟能让腾讯系的58到家无视四维图新而选择投身阿里系的高德,这是有多大的吸引力? 放弃自建O2O后,高德显得对O2O更有兴趣 去年俞永福接管高德之后突然宣布放弃O2O业务时还曾引起了不小的争论,在全民皆O2O的时代,高德竟然主动放弃O2O着实有些让业界惊讶.但后来高德的实际行动却显示,其并非彻底放弃O2O,只是换个形式,放

搜狐、搜狗、高德、蓝标聚在一起,商量了个大事情

搬好小板凳,快站哥要宣布一个重磅新闻: 快站成立三周年啦! 为此,快站将于4月19日在北京泰富酒店举办一个三周年庆典.届时,我们将公布快站未来的战略规划. 诚邀各位站长到场参加. 重磅的嘉宾阵容,思维碰撞的圆桌会议 在这次大会上,你不仅可以: 和互联网大佬面对面,聊服务.聊生态,第一时间捕捉互联网发展新动向, 还可以和数百名同行.服务商现场交流营销推广技巧,获取更多互联网资源! 除了与总裁爸爸喝喝茶,和站长大人唠家常,大会将开启一个整合业内各方资源的重要项目 --谷雨联盟 谷雨联盟:由搜狐创新研

Android 高德地图的定位,周边搜索

刚弄完这两个功能,当然是结合官网例子实现的.效果还行,稍作优化便可整合到app使用.在这里做一下总结,及说明下我的思路. 刚开始上手感觉比较乱学起来也比较累,方法,类太多,直接复制各种错,还不知道为什么这么做.现在我们一起交流下实现的思路: 1:定位:这是所有地图功能实现的基础,所以不管要实现诸如周边搜索啊,导航啊什么的都需要基于定位. 如何定位:官网上例子也很详细,主要是实现几个监听,并实现方法: aMap.setLocationSource(this);// 设置定位监听 //绑定监听 ma

【API】高德地图API JS实现获取坐标和回显点标记

1.搜索+选择+获取经纬度和详细地址 2.回显数据并点标记 3.实现 第一步:引入资源文件 <!--引入高德地图JSAPI --><script src="//webapi.amap.com/maps?v=1.3&key=在官网申请一个key"></script><!--引入UI组件库(1.0版本) --><script src="//webapi.amap.com/ui/1.0/main.js">

js中实现高德地图坐标经纬度转百度地图坐标

1 function tobdMap(x, y) { 2 var x_pi = 3.14159265358979324 * 3000.0 / 180.0; 3 var z = Math.sqrt(x * x + y * y) + 0.00002 * Math.sin(y * x_pi); 4 var theta = Math.atan2(y, x) + 0.000003 * Math.cos(x * x_pi); 5 var bd_lon = z * Math.cos(theta) + 0.00

Android——调用高德地图API前期准备

1.登陆高德开放平台注册账号http://lbs.amap.com/ 2.创建自己的应用并且添加新key 获取发布版安全码获取方法: 在AndroidStudio的Terminal中编译: 输入如下图: 开发版安全码获取: 开发版获取的另一种方法:(和获取发布版本一样在AndroidStudio的Terminal中编译 只是keystore的路径改成debug.keystore    密钥库口令默认是android) 创建key成功 得到key: 前期准备完成 下一篇文章是开发配置 备忘 ,也希

UESTC30-最短路-Floyd最短路、spfa+链式前向星建图

最短路 Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) 在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的T-shirt.但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以现在他们想要寻找最短的从商店到赛场的路线,你可以帮助他们吗? Input 输入包括多组数据. 每组数据第一行是两个整数NN ,MM (N≤100N≤100 ,M≤10000M≤1000

网上找到的一个使用高德API把地址转为经纬度的API

import com.fengyunhe.helper.http.HttpClientHelper; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.util.Arrays; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * Cre