对象软件开发中典型的工具软件——花生壳、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页

美国VPS 美国高防VPS 香港VPS 日本VPS 首月9元 百纵科技

百纵科技湖南百纵科技有限公司是一家具有ISP ICP 电信增值许可证的正规公司,多年不断转型探索现已颇具规模,公司成立于2009年 通过多年经营积累目前已独具一格,公司主要经营香港服务器,香港站群服务器,美国高防服务器,美国站群服务器,云服务器,母机租用托管!美国CN2云服务器,美国VPS,美国高防云主机,美国独立服务器,美国站群服务器,美国母机。美国原生IP支持大批量订货 合作 适用电商 亚马逊...

95IDC香港特价物理机服务器月付299元起,5个ip/BGP+CN2线路;美国CERA服务器仅499元/月起

95idc是一家香港公司,主要产品香港GIA线路沙田CN2线路独服,美国CERA高防服务器,日本CN2直连服务器,即日起,购买香港/日本云主机,在今年3月份,95IDC推出来一款香港物理机/香港多ip站群服务器,BGP+CN2线路终身7折,月付350元起。不过今天,推荐一个价格更美的香港物理机,5个ip,BGP+CN2线路,月付299元起,有需要的,可以关注一下。95idc优惠码:优惠码:596J...

10gbiz七月活动首月半价$2.36/月: 香港/洛杉矶CN2 GIA VPS

10gbiz怎么样?10gbiz 美国万兆带宽供应商,主打美国直连大带宽,真实硬防。除美国外还提供线路非常优质的香港、日本等数据中心可供选择,全部机房均支持增加独立硬防。洛杉矶特色线路去程三网直连(电信、联通、移动)回程CN2 GIA优化,全天低延迟。中国大陆访问质量优秀,最多可增加至600G硬防。香港七星级网络,去程回程均为电信CN2 GIA+联通+移动,大陆访问相较其他香港GIA线路平均速度更...

花生壳软件为你推荐
敬汉卿姓名被抢注身份证号码被别人抢注了12306帐号怎么办微信回应封杀钉钉微信大封杀什么时候结束lunwenjiancewritecheck论文检测准吗?百花百游迎得春来非自足,百花千卉共芬芳什么意思103838.com39052.com这电影网支持网页观看吗?www.mywife.ccMywife-No 00357 MANAMI SAITO种子下载地址有么?求好心人给www.zhiboba.com登录哪个网站可以看nba当天的直播 是直播66smsm.com【回家的欲望(回家的诱惑)大结局】 回家的诱惑全集66 67 68 69 70集QOVD快播观看地址??m.yushuwu.org花样滑冰名将YU NA KIM的资料谁有?hao.rising.cn如何解除瑞星主页锁定(hao.rising.cn). 不想用瑞星安全助手
主机域名 国外vps 美国主机推荐 站群服务器 NetSpeeder 商务主机 流量计费 国外免费asp空间 怎么建立邮箱 无限流量 中国电信测速器 阿里云免费邮箱 国内域名 帽子云排名 全能空间 阿里云个人邮箱 国外代理服务器 葫芦机 时间服务器 apachetomcat 更多