zoukankan      html  css  js  c++  java
  • 【测试技术】ant在测试中的使用@文件以及目录的读写删和复制

        ant其实就是一个java的打包工具,存在的时间已经很久了,很多同行在使用中可能就是用,对为什么要用它,能够怎么用没有更多的了解:

    --------------------------------------------------

    ps:ant功能忒强大了,一篇文章搞不定啊,只好分开写。要不阅读困难。

    --------------------------------------------------

    1.为什么要用:

    高级语言的特点就是需要编译,每当编译就需k要有环境依赖,以及在编译中需要有编译先后顺序,当然,现在的eclipse足够强大可以帮我们全部搞定,但是每当我们想去做重复性编译以及运行的时候,更多的还是希望能够减少对环境依赖,同时也希望能够脱离平台,而ant正是干这个用的》

    2.基本用法:

    相关的资料网上已经有很多,针对path,class,target等标签分别干嘛干嘛的,我这里也不必多说,只是简单按功能介绍下:

    @文件以及目录的读写删和复制

    @java项目的编译

    @java文件的运行

    @测试脚本的运行(testng,junit)

    @测试报告的生成(testng,junit)

    @压缩文件

    @发送邮件

    以上所述都是跟自动化测试中常用到的功能,可能还有其他的功用,日后若是遇到了再补充。

    @文件以及目录的读写删和复制

    主要是文件和文件夹

    <?xml version="1.0" encoding="UTF-8"?>
    <project basedir="." default="copyfile" name="file_and_folder">
    
        <!-- property 定义全局变量-->
        <property name="test.file" value="ant/test1.txt"/>
        <property name="test.dir" value="ant/test1"/>
        <property name="to.dir" value="tar"/>
        <property name="to.file" value="tar/tar1.txt"/>
    
       <target name="createfile">
          <touch file="${test.file}"/>
       </target>
        
       <target name="copyfile1">
          <copy file="${test.file}" todir="${to.dir}" overwrite="true" />
       </target>
       <target name="copyfile2">
          <copy file="${test.file}" tofile="${to.file}" overwrite="true" />
       </target>   
    
       <target name="cutfile">
          <move file="${test.file}" todir="${to.dir}" overwrite="true" />
       </target> 
    
       <target name="delfile">
          <delete file="${to.file}"/>
       </target>
    
       <target name="createdir">
          <mkdir dir="${test.dir}"/>
       </target>
        
       <target name="copydir">
          <copy todir="${to.dir}/new" overwrite="true">
          <fileset dir="${test.dir}" excludes="**/*.java"/>
          </copy>
       </target>
    
       <target name="cutdir">
          <move dir="${test.dir}" todir="${to.dir}" overwrite="true" />
       </target> 
    
       <target name="deldir">
          <delete dir="${to.file}/new"/>
       </target>   
      
       <target name="packClient">
            <exec executable="C:WINDOWSsystem32cmd.exe"  failonerror="false" dir=".">
                    <arg line="/c dir" />            
                </exec>    
       </target>     
       
    </project>

    其他常用的文件操作:

    <!-- 拷贝一个文件: -->
    <copy file="myfile.txt" fofile="mycopy.txt"/>
    
    <!-- 拷贝一个文件到指定目录: -->
    <copy file="myfile.txt" todir"../some/other/dir"/>
    
    <!-- 拷贝一个目录到另一个目录: -->
    <copy todir="../new/dir">
    <fileset dir="src_dir"/>
       <exclude name="**/*.java"/>
    </fileset>
    </copy>
    <!---->
    <copy todir="../dest/dir"
    <fileset dir="src_dir" excludes="**/*.java"/>
    </copy>
    
    <!-- 拷贝一个文件集合到一个目录,同时建立备份文件: -->
    <copy todir="../backup/dir">
    <fileset dir="src_dir"/>
    <globmapper from="*" to="*.bak"/>
    </copy>
    
    <!-- 拷贝一个集合的文件到一个目录,并替换掉@TITLE@ -->
    <copy todir="../backup/dir">
    <fileset dir="src_dir"/>
    <filterset>
       <filter token="TITLE" value="Ann Lee"/>
    </filterset>
    </copy>
    
    <!-- 拷贝一个目录下的东西到另一个目录下 -->
    <copydir src="${src}/resources" dest="${dest}" includes="**/*.java" excludes="**/Test.java"/>
    
    <!-- 拷贝一个文件 -->
    <copyfile src="Test.java" dest="subdir/Test.java"/>
    
    <!-- 删除文件,目录,(拷贝中各种关于目录的操作也可以用在这里)
    
    删除一个文件 -->
    <delete file="/lib/ant.jar"/>
    
    <!-- 删除一个目录 -->
    <delete dir="lib"/>
    
    <!-- 删除所有符合规则的文件(.bak文件)包括子目录 -->
    <delete>
    <fileset dir="." includes="**/*.bak"/>
    </delete>
    
    <!-- 删除当前目录下所有的文件和目录,包括当前目录 -->
    <delete includeEmptyDirs="true">
    <fileset dir="build"/>
    </delete>
    
    <!-- 删除当前目录下所有的文件和目录,不包括当前目录 -->
    <delete includeemptydirs="true">
    <fileset dir="build" includes="**/*"/>
    </delete>
    
    <!-- 删除当前目录下所有的svn相关文件(因为svn文件默认是excludes,所以要设置一下) -->
    <delete defaultexcludes="false">
    <fileset dir="src" includes="**/*.svn"/>
    </delete>
    
    
    
    <!-- 6.8,Touch的使用 -->
    
    <!-- 如果文件不存在创建文件,如果存在,更改最后访问时间为当前系统时间 -->
    <touch file="myfile"/>
    
    <!-- 如果文件不存在创建文件,更改最后访问时间为06/28/2002 2:02 pm -->
    <touch datetime="09/10/1974 4:30 pm">
    <fileset dir="src_dir"/>
    </touch>
    
    <!-- 6.5,剪切文件 -->
    <move todir="some/new/dir">
    <fileset dir="my/src/dir">
    <include name="**/*.jar"/>
        <exclude name="**/ant.jar"/>
    </fileset>
    </move>
    
    <!-- 6.6重命名-->
    <rename src="ann.jar" dest="ant-${version}.jar"/>
    
    <!-- 6.7建立临时文件 -->
    
    <!-- 在目录build下,建立名为temp.file,后缀为.xml的文件 -->
    <tempfile property="temp.file" destDir="build" suffix=".xml"/>
    
    <!-- 6.10,替换replace -->
    
    <replace file="configure.sh" value="defaultvalue" propertyFile="source/name.properties">
    <replacefilter token="@token1@"/>
    <replacefilter token="@token2@" value="value2"/>
    <replacefilter token="@token2@" value="property.key"/>
    </replace>
  • 相关阅读:
    pycharm调试时出现十分缓慢,变量数据没法预览的解决办法
    gitignore设置失效的问题
    存储过程计算两个时间段的请假天数
    Vue 多层级目录拖动排序
    vue 动态插入渲染html
    Vue:eliment-ui el-tree动态加载更新
    Angular2+ iframe跨域调用父页面js
    Angular2.0+动态绑定html文本
    Angular2.0+开发 -实现部门树形结构
    Angular2.0+开发(1)-WebStorm配置及第一个Hello World
  • 原文地址:https://www.cnblogs.com/100fighting/p/3156969.html
Copyright © 2011-2022 走看看