对象软件开发中典型的工具软件——花生壳、IntelliJ、TestNG、Mockito

花生壳软件  时间:2021-03-13  阅读:()

杨教授工作室精心创作的优秀程序员职业提升必读系列资料

1. 1 软件开发中典型的工具软件——花生壳、 IntelliJ、 TestNG、 Mockito

1. 1. 1花生壳——动态域名解析服务

1、花生壳P e anutHull是什么

简单来说它就是一种动态域名解析服务这个名字也是提供动态域名解析服务的那家公司命名的实际上没有什么特殊的含义就是他们家公司的一个服务产品。

与花生壳提供相同服务的还有nat123、 dnspod等。

2、什么是动态域名解析服务

1什么是动态域名解析服务

动态域名解析是指将域名解析到本地动态公网IP当IP变化时域名IP也是与最新IP相对应一致这样即使公网IP发生变化也不会影响域名的正常解析正常访问应用。

2为什么要应用动态域名解析服务

由于很多用户在一般情况下都没有固定的IP都是ADS L的动态IP。而如果需要在此IP所对应的主机中安装相关的Web服务 因此远程客户是无法访问该Web服务的。此时就需要用到花生壳域名服务了通过申请的花生壳域名随时绑定我们的动态IP。

3花生壳是如何实现动态域名解析服务

目前动态域名解析应用方案广泛用于动态公网IP环境发布应用到外网。因为动态域名解析只能局限于公网IP环境且不能解决80端口被屏蔽的问题对应出现了映射转发和映射穿透这二种技术应用。通过80映射可以解决80端口问题。通过映射穿透可以解决无公网IP环境发布应用到外网实现外网的正常访问。

3、花生壳是一套完全免费的动态域名解析服务客户端软件

当安装并注册该项服务无论用户在任何地点、任何时间、使用任何线路均可利用这一服务建立拥有固定域名和最大自主权的互联网主机。 “花生壳”支持的线路包括普通电话线、 ISDN、 ADSL、有线电视网络、双绞线到户的宽带网和其它任何能够提供互联网真实IP的接入服务线路而无论连接获得的IP属于动态还是静态。

花生壳所提供的服务能把用户申请的固定的动态域名如http://zktianbo.eicp.net:2020映射到我们电脑主机现在所使用的动态IP我们每次改变IP它都能让其他人通过访问域名来实现访问我们的服务器。

4、花生壳用户分为三个级别

杨教授工作室版权所有盗版必究 1/10页

杨教授工作室精心创作的优秀程序员职业提升必读系列资料

 1标准用户

2专业用户

3商业用户

5、花生壳官网http://www.oray.co m/

1. 1.2 IntelliJ是一款综合的Java编程环境

1、它是目前市场上最好的ID E工具

1它提供了一系列最实用的的工具组合

智能编码辅助和自动控制支持J2 E EAnt JUnit和C VS集成非平行的编码检查和创新的GUI设计器。

2提高开发人员的开发效率

ID EA把J ava开发人员从一些耗时的常规工作中解放出来显著地提高了开发效率。具有运行更快速生成更好的代码持续的重新设计和日常编码变得更加简易与其它工具的完美集成很高的性价比等特点。

它包括了很多辅助的功能并且与Java结合得相当好。在4.0版本中支持GenericsBEA WebLogic集成改良的CVS集成以及GUI设计器。

2、提供收费版旗舰版和免费的社区开源版本

Inte lliJ ID EA以前是收费软件不过在2009年以后就开始推出了免费的社区开源版本。

3、下载Inte lliJ ID EA工具

可以从http://www.jetbrains.com/idea/download/index.html网中下载IntelliJ IDEA工具根据操作系统平台的不同分别选择不同的系统版本。

杨教授工作室版权所有盗版必究 2/10页

杨教授工作室精心创作的优秀程序员职业提升必读系列资料

其中左边为旗舰版的下载链接需要lice nce而右边为社区开源版开源免费。

1. 1.3 TestNG设计涵盖所有类型的测试

1、 TestNG能够完成单元、功能和集成等测试类型

TestN G是一个开源自动化测试框架其灵感来自JUnit和NUnit但同时引入了一些新的功能目的是要优于JUnit的 使其功能更强大使用更方便需要JDK 5或更高的JDK版本的支持。

TestN G是类似于JUnit 特别是JUnit 4 但它不是一个JUnit扩展。 TestNG的创造者是Cedric Beust 塞德里克·博伊斯特 。

2、 TestNG主要的特点

TestNG消除了大部分的旧框架的限制使开发人员能够编写更加灵活和强大的测试。因为它在很大程度上借鉴了Jav a注解JDK 5.0引入的来定义的测试。

1注解

2 TestN G使用Java和面向对象的功能

3支持综合类测试——例如默认情况下没有必要创建一个新的测试每个测试方法的类的实例。

杨教授工作室版权所有盗版必究 3/10页

杨教授工作室精心创作的优秀程序员职业提升必读系列资料

4独立的编译时测试代码运行时配置/数据信息

5灵活的运行时配置

6支持依赖测试方法并行测试负载测试局部故障

7灵活的插件API

8支持多线程测试

3、相关的教程

在http://www.yiibai.co m/html/testng/2013/0914293.html网站中有TestNG的教程可以阅读和参考。

1. 1.4 下载TestNG的归档文件

1、 TestNG的官方网站

如果需要下载最新版本的TestNG的jar文件只需要点击访问http://www.testng.org官方网站下面为该网站的局部截图。

杨教授工作室版权所有盗版必究 4/10页

杨教授工作室精心创作的优秀程序员职业提升必读系列资料

2、下载TestNG的归档文件

网站中提供有针对Ec lipse的插件可以直接在MyEc lip se或者Ec lip se中应用“更新”面板进行下载。

杨教授工作室精心创作的优秀程序员职业提升必读系列资料

1. 1.5 强大的Mockito测试框架

1、什么是mo ck测试和mock框架mo ck测试就是在测试过程中对那些不容易构建的对象用一个虚拟对象来代替测试的方法就叫mo ck测试。而Mockito为mock的工具框架——针对J ava的单元测试模拟框架它与EasyMock和jMock很相似。

Mockito尝试用不一样的方法做Mocking测试并且使用简单和轻量级并且能够替代EasyMock的框架——Ea syMock目前有点过时Mo ckito是现在比较流行的。丰富的文档包含在j avadoc中直接在I D E中也可查看相关的文档、实例和帮助说明测试代码的可读性很高。

2、为什么在单元测试中要应用Mocking测试

1应用示例

如果在项目中有如下的示例其中存在A、 B、 C、D、 E等类但彼此之间存在一定的依赖。但由于在单元测试中应该尽可能独立对一个类的单元测试不应该再和其它的类有任何交互。

从上图可以看出如果我们要对A类中的相关方法进行测试那么就要先把整个依赖树构建出来也就是要创建出B、 C、D和E等类的对象实例。此时可以应用替代方案就是使用mocks——因为mock可以模拟出各种各样的对象从而代替真正的对象做出希望的响应。 。

从上图中可以清晰的看出mock对象就是在调试期间用来作为真实对象的替代品。

2为什么要应用mock对象

在软件开发中常遇到的问题是应用系统中的其它的协同模块尚未开发完成或者被测

杨教授工作室版权所有盗版必究 6/10页

杨教授工作室精心创作的优秀程序员职业提升必读系列资料

试模块需要和一些不容易构造、 比较复杂的对象进行交互另外 由于不能肯定其它模块的正确性我们也无法确定测试中发现的问题是由哪个模块引起的。

而Mock对象由于能够模拟其它的协同模块的行为被测试模块通过与Mock对象协作最终可以获得一个孤立的测试环境从而使测试顺利地进行。

比如在系统的数据访问层中有某个功能类提供了一个通用的API来访问和修改数据仓库中的相关数据然后如果需要测试这个API而不用配置连接某个本地的数据库或者一个远程的数据库、或者是一个文件系统反正就是任何放数据的东西——在单元测试中把只需要把mo ck数据注入到数据访问层相关的测试方法中这样就不要依赖任何数据源就可以完成测试。

3、 Stub和Mock的对比

 1相同点

Stub 存根类和Mock对象都是用来模拟外部依赖使我们能控制。其中的Stub替代子模块或者某些特定功能模块的模拟函数或模拟类。在分布式对象中代表着客户端对象承担着通信的职责。在VC++环境中做测试的模拟函数。

由于Stub就是用来代替所测的子模块故而它不能为空。而在J2EE中的Stub是为屏蔽客户调用远程主机上的对象必须提供某种方式来模拟本地对象这种本地对象称为存根stub 。存根负责接收本地方法调用并将它们委派给各自的具体实现对象。

在单元测试中 Stub对象主要用来提供测试时所需要的测试数据可以对各种交互设置相应的回应。 例如我们可以设置方法调用的返回值等等 但Mockito 中when(„).thenReturn(„)这样的语法也是设置方法调用的返回值。另外也可以设置方法在何时调用会抛异常等。

2不同点stub完全是模拟一个外部依赖用来提供测试时所需要的测试数据。而mock对象用来判断测试是否能通过也就是用来验证测试中依赖对象间的交互能否达到预期。在M o ckito中用verify(„).methodXxx(„)语法来验证methodXxx方法是否按照预期进行了调用。

因此在mocking框架中mock对象实际上可以同时作为stub和mock对象使用两者并没有严格区别。因为它既可以设置方法调用返回值又可以验证方法的调用。

更多 的技术帮助 的相关信息可 以参考下面的 网站 http://martinfo wler.co m/artic les/mocksArentStubs.html上的内容说明。

4、Mockito的主要优点和不足

杨教授工作室版权所有盗版必究 7/10页

杨教授工作室精心创作的优秀程序员职业提升必读系列资料

相对于Ea syMock和jMockMo ckito的优点是通过在执行后校验哪些函数已经被调用消除了对期望行为expec tatio ns的需要。其它的mock ing类型的系统库都需要在执行前记录期望行为exp ec tatio ns 而这将会导致出现丑陋的初始化代码。

但是Mockito也并不是完美的它不提供对静态方法、构造方法、私有方法以及F inal方法的模拟支持。对于final类、匿名类和Java的基本类型也是无法进行mo ck的。

1. 1.6 下载Mock系统库

1、官方网站http://mo ck ito.or g/

可以在http://code.goo gle.co m/p/mock ito/直接下载mo ck ito-a ll-x.x.x.j ar包并在工程中引用即可。http://do cs.mock ito.goo glecode.co m/hg/latest/org/mock ito/Mock ito.html这上有很详细的关于Mockit功能及使用的描述文档。

1. 1.7 在测试中应用Mockito

1、在项目中引入Mockito的系统库

只需要将Mockito的系统库文件放到项目的c lassPath路径就可以使用Mockito。

2、在测试代码中添加如下的imp o r t语句

在项目中引入Mo ck ito的系统库文件后在测试的程序代码中一般可以采用如下的imp ort语句import static o rg.mock ito.Mock ito.*;

在Java程序中一般导入一个类时都采用“import com. . . . .ClassName;”而静态导入一般是这样的 “import static com. . . . .ClassName.*;”。这里多了个static还有就是类名ClassName后面多了个“.*” 意思是导入这个类里的静态方法。

当然也可以只导入某个静态方法只要把“.*”换成静态方法名就可以了。然后在这个类中就可以直接用方法名调用静态方法而不必用ClassName.方法名的方式来调用。

3、创建mo ck对象

可以对类和接口进行mock对象的创建创建的时候可以为mock对象命名也可以忽略命名参数。为mock对象命名的好处就是调试的时候会很方便 比如我们mock多个对象在测试失败的信息中会把有问题的mock对象打印出来有了名字我们可以很容易定位和辨认出是哪个mock对象出现的问题。

杨教授工作室版权所有盗版必究 8/10页

杨教授工作室精心创作的优秀程序员职业提升必读系列资料

 1第一种方式when(i.next()).thenReturn("Hello").thenReturn("World");

2第二种方式when(i.next()).thenReturn("Hello", "World");

上面的语句设定相当于下面的功能when(i.next()).thenReturn("Hello");when(i.next()).thenReturn("World");

第一次调用i.ne xt()将返回”He llo” 第二次的调用会返回”Wo rld” 。

5、应用示例import static o rg.mock ito.Mockito.*;

/**

创建mock对象创建Mock对象的语法为mock(class or interface)。例子中创建了List集合接口的mo ck对象。mock对象一旦建立,便会自动记录自己的交互行为。

*/

List mockedList=mock(List.class);

//使用mock objectmo ckedList.add("one");mockedList.clear();

/**

在Mockito中验证mock对象交互行为的方法是verify(mock).so meM ethod(„)。

下面的示例实现验证add("one")这一行为是否发生过。

*/verify(mockedList).add("one");

/**

在verify中我们指定了time s参数 因此这个将会验证不通过 因为只发生过一次

*/verify(mockedList, times(2)).add("o ne");verify(mockedList).c lear();

/*

杨教授工作室版权所有盗版必究 9/10页

CloudCone(20美元/年)大硬盘VPS云服务器,KVM虚拟架构,1核心1G内存1Gbps带宽

近日CloudCone商家对旗下的大硬盘VPS云服务器进行了少量库存补货,也是悄悄推送了一批便宜VPS云服务器产品,此前较受欢迎的特价20美元/年、1核心1G内存1Gbps带宽的VPS云服务器也有少量库存,有需要美国便宜大硬盘VPS云服务器的朋友可以关注一下。CloudCone怎么样?CloudCone服务器好不好?CloudCone值不值得购买?CloudCone是一家成立于2017年的美国服务...

萤光云(20元/月),香港CN2国庆特惠

可以看到这次国庆萤光云搞了一个不错的折扣,香港CN2产品6.5折促销,还送50的国庆红包。萤光云是2002年创立的商家,本次国庆活动主推的是香港CN2优化的机器,其另外还有国内BGP和高防服务器。本次活动力度较大,CN2优化套餐低至20/月(需买三个月,用上折扣+代金券组合),有需求的可以看看。官方网站:https://www.lightnode.cn/地区CPU内存SSDIP带宽/流量价格备注购...

Megalayer美国独立服务器新用户首月优惠350元(30M优化不限流量)

Megalayer 商家在开始看到有提供香港服务器、香港站群服务器的时候有介绍过,后来就一直没有怎么关注。但是前几天有看到网友使用到他们家的美国独立服务器问其如何的,但是我没有使用过就不好评论,这不前几天也有介绍到Megalayer美国独立服务器。以及我们也有看到商家有提供美国站群服务器和美国大带宽服务器产品,可选30M不限制流量CN2优化线路,以及100M不限制流量国际带宽线路。新年元旦后,Me...

花生壳软件为你推荐
乐划锁屏oppofindx2乐划锁屏点进去闪退 是什么情况?permissiondeniedpermission denied是什么意思啊?咏春大师被ko练咏春拳的杨师傅对阵散打冠军,注:是高龄级别被冠军级别打败了,那如果是咏春冠军叶问呢?更别说是李小地图应用手机地图软件那么多,都不知道用哪个好了?曲妙玲张婉悠香艳版《白蛇传》是电影还是写真集?同ip域名不同域名解析到同一个IP是否有影响www.gegeshe.com有什么好听的流行歌曲菊爆盘请问网上百度贴吧里有些下载地址,他们就直接说菊爆盘,然后后面有字母和数字,比如dk几几几的,175qq.comkf.qq.com.地址是什么xyq.cbg.163.com这俩号哪个号值得买 价钱合适吗?多少合适!再续前缘区的http://xyq.cbg.163.com/cgi-bin/equipquery.py?server_id=149&equip_id=404113&act=buy_show_equip_infohttp://xyq.cb
个人注册域名 申请免费域名 服务器评测 linode代购 godaddy域名优惠码 NetSpeeder 灵动鬼影 太原联通测速平台 web服务器架设 老左来了 linux使用教程 美国独立日 360云服务 免费邮件服务器 个人免费邮箱 iki 金主 贵州电信 windowsserver2012r2 cx域名 更多