很意外的,今天花了半天多时间,看了《测试驱动开发》,当然还需要时间消化,里面有几处为什么这么重构,还是有点迷茫。。
入行一年多,项目做了几个。没一个满意的。。。。主要就是代码编写得很垃圾,团队协作不好,bug一堆。自己都不想看自己的代码。
这也许就是受过正规软件教育和自学的差别吧!
不过个人感觉这也是好事,至少知道了自己的不足。所以花时间看了重构,TDD,又看了一遍设计模式。有了一些收益,但是还是需要在开发中去实践。所以从现在开始逼迫自己以TDD开发。说来惭愧,以前项目里基本就没测试,文档基本都是项目完了补的。(我想这也是国内大部分小公司的现状吧。)
今天照着书,做着例子,用Ant管理程序,有点惬意
之前就有用过Ant还有Maven,后来又没用了,因为实在没找到其所说的优越性。今天借着例子用Ant,感觉效率上是有一些提高(可能是错觉),应该是比较有信心了。因为有测试,双击下Ant的相应target,几秒钟测试通过,感觉心情很舒畅。有信心和愉悦的心情做下一步工作
至于为什么还选Ant,而不用推广比较火热的Maven,是因为第一次使用Maven,肯定要上网,网速要慢了就郁闷了,一堆jar要下,要不自己建个仓库。。。。个人使用的开销太大了,很不划算。Ant就比较灵活了,写个build.xml文件就搞定了。别人用什么开发工具,什么样的目录结构,我拿到手,修改下build.xml文件里的相应路径就搞定了。
为顺利用上,特意花时间解决了一些以前用Ant,悬而未决的问题。
1.和jee没关系,是swing相关的。以前用ant运行swing程序,老是一闪而过,网上还没找到解决办法,昨天又找了找,在javaeye问答区找到了答案。将java标记的fork属性设为true或on即可。意思就是将ant和java程序运行在不同的jvm上。默认是运行在一个jvm上的,所以当ant运行结束后,自然就会关闭swing了。
2.ant启动,关闭tomcat,在网上也找到了答案。
<target name="run">
<description>启动tomcat</description>
<java jar="${tomcat_home}/bin/bootstrap.jar" fork="true">
<jvmarg value="-Dcatalina.home=${tomcat_home}"/>
</java>
<echo>成功启动Tomcat</echo>
</target>
<target name="stop">
<java jar="${tomcat_home}/bin/bootstrap.jar" fork="true">
<jvmarg value="-Dcatalina.home=${tomcat_home}"/>
<arg line="stop"/>
</java>
</target>
<target name="debug">
<java jar="${tomcat_home}/bin/bootstrap.jar" fork="true">
<jvmarg value="-Dcatalina.home=${tomcat_home}"/>
<jvmarg value="-Xdebug"/>
<jvmarg
value="-Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n"/>
</java>
</target>
3.ant取消部署项目时,有时WEB-INF下的一些jar无法删除,导致了整个项目目录无法删除,继而导致无法重新部署。解决办法,在META-INF(和WEB-INF目录同级)目录下,新建一个context.xml文件,输入如下内容。
<Context path="/你的项目名称" reloadable="true" antiResourceLocking="true" antiJARLocking="true">
</Context>
4测试失败时不停止测试,还继续运行。解决办法,在junit标签里面将haltonfailure属性和haltonerror属性设为true或on即可。
5我昨天找了半天ant的debug功能。ant的debug功能和IDE的debug功能应该是不同的意思,或者是我理解有误。一般使用IDE的debug都是单步调试的,就是断点调试。而ant好像就没断点调试能力(好像需要额外的代码模拟之类的,没研究)。不过这也就需要用测试来弥补了(是初期强迫写测试的好办法
),事实上断点调试时间是比测试所花的时间长得多。这个在做项目时深有体会。
写了一些ant脚本。
1.build_app.xml。应用程序相关。包括了编译,运行和打jar包。
2.build_web.xml。web程序相关。包括编译,打包。
3.build_test.xml。测试相关,配合上面两个构建文件使用的。提供编译测试文件,测试及生成测试报告。测试类请以Test结尾,否则自行修改构建文件。
4.run_tomcat.xml。tomcat相关,启动,关闭,debug tomcat。部署,取消部署,start,stop项目,配合build_web.xml使用。
四个文件保存在ant目录下,只要在根目录下建立build.xml文件,将需要的构建文件import进来就可以了。不要同时import build_app.xml文件和build_web.xml文件,target名称有重复,且本来就是两个不同的项目类型。
文件放附件,对Ant有兴趣,又不想写构建脚本的可以玩玩。相应路径需要自行修改。
最后,自我祝愿我的代码质量能有所提高
分享到:
相关推荐
在《Test-Driven and Acceptance TDD for Java Developers》这本书中,作者Lasse Koskela可能介绍了如何将模型驱动的方法与测试驱动开发(TDD)相结合,以便于Java开发者能够更有效地构建高质量的应用程序。...
- **Java与测试框架**:深入讲解了Java语言的基础知识,以及如何利用JUnit、Ant等测试框架来进行单元测试和集成测试。 - **测试驱动开发流程**:详细介绍了TDD的具体实施步骤,包括如何编写测试案例、如何确保测试...
此外,良好的单元测试覆盖还有助于重构代码时的信心提升,因为可以通过测试来确保重构后的代码仍然符合原有的功能需求。 **单元测试的常见误区**: - **误解1:编写单元测试浪费时间**。实际上,虽然编写单元测试会...
它在Java测试工具中占据核心地位,因为JUnit不仅是一个框架,更是一种推动单元测试、测试先行编程和测试驱动开发(TDD)的哲学。JUnit的影响力超越了Java本身,衍生出了许多针对不同语言的xUnit工具,对全球的程序员...
- **不断重构以改善设计**:单元测试为重构提供了一种安全网,使得开发者可以大胆地进行重构而不必担心破坏现有功能。 - **TDD的挑战**: - **需要编写更多的代码**:编写单元测试本身也需要时间和精力。然而,...
通过TDD,开发者可以更自信地进行代码重构,因为有测试作为安全网。 为了深入学习和实践JUNIT 和TDD,可以参考提供的在线资源,包括如何在Eclipse中使用JUNIT、如何编写单元测试以及关于TDD的理论和实践文章。这些...
JavaScript TDD(Test-Driven Development,测试驱动开发)是一种软件开发方法论,它提倡先编写测试用例,再根据测试失败的结果来编写功能代码。在这个名为"javascript-tdd-tutorial"的教程中,我们将深入探讨如何在...
### JUnit和单元测试简介 #### 一、基础知识与概念 ...总之,JUnit不仅是一个强大的单元测试框架,而且通过其丰富的特性和良好的社区支持,成为Java开发人员进行测试驱动开发(TDD)的重要工具之一。
### Junit 教程及代码知识点总结 #### 一、单元测试的重要性和...综上所述,本教程旨在帮助读者掌握如何使用JUnit这一强大的单元测试框架来提高代码的质量和设计水平,同时通过实践案例加深对TDD的理解与应用能力。
- **基本概念**:TDD的基本原则是“红绿重构”,即首先编写失败的测试(红色),然后编写使测试通过的功能代码(绿色),最后进行重构以优化代码结构。 - **工具和技术**:本书介绍了多种用于TDD的工具和技术,包括...
Rake是Ruby的构建工具,类似于Java中的Ant或Python的setup.py,用于自动化任务执行,如运行测试。RSpec则是一个行为驱动开发(BDD)框架,但也可用于TDD,因为它提供了编写单元测试和集成测试的强大功能。 首先,...
- **编写可测试的代码**:采用测试驱动开发(TDD)的方法来编写易于测试的代码。 - **使用 Mockito 重构遗留代码**:对于已经存在的代码库,使用 Mockito 可以帮助提高测试覆盖率,并使代码更容易维护。 - **高级 ...
测试驱动开发(TDD) http://es.wikipedia.org/wiki/Desarrollo_guiado_por_pruebas 支持工具 阿帕奇蚂蚁http://ant.apache.org/ Apache Maven http://maven.apache.org/ 软件配置管理(SCM) CVS http: