`
Ivan_Pig
  • 浏览: 381996 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

重构?测试?TDD?Ant?

阅读更多
    很意外的,今天花了半天多时间,看了《测试驱动开发》,当然还需要时间消化,里面有几处为什么这么重构,还是有点迷茫。。
    入行一年多,项目做了几个。没一个满意的。。。。主要就是代码编写得很垃圾,团队协作不好,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有兴趣,又不想写构建脚本的可以玩玩。相应路径需要自行修改。

    最后,自我祝愿我的代码质量能有所提高
  • ant.zip (4.6 KB)
  • 下载次数: 28
2
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics