2011-09-16 20 views
0

他の先行するアクションなしで(依存しないで)プロジェクトに対してJUnitテストを実行するantターゲットを作成しようとしています。私はEmmaを使って別のターゲットでこれらを実装しています。そして、これらのインストルメントされたクラスでバイトコードの突然変異を行う別のターゲットがあります。インストルメンテーション/突然変異のステップを実行した後は、JUnitをそのターゲットで実行することができますが、このコンパイル・ツールの突然変異チェインとは別にJUnitテストを実行するだけの能力が必要です。JUnitテストのみを実行するAntタスクはテストを実行しません

私はこのようになります対象構築しました:ターゲット内のJUnitタスクは私が得るすべてははmkdirタスクから出力された、しかし、実行されません

<target name="mutant-test-run" description="Run tests with mutation applied"> 
    <path id="run.classpath"> 
     <pathelement location="${out.dir}" /> 
    </path> 
    <mkdir dir="${reports}" /> 
    <junit printsummary="yes" fork="true"> 
     <classpath> 
    <pathelement location="${out.instr.dir}" /> 
     <path refid="junit.classpath" /> 
    <path refid="famaLib.classpath" /> 
    <path refid="run.classpath" /> 
    <path refid="emma.lib" /> 
    </classpath> 
     <jvmarg value="-Demma.coverage.out.file=${coverage.dir}/coverage.emma" /> 
     <jvmarg value="-Demma.coverage.out.merge=true" /> 

     <formatter type="plain" /> 
     <formatter type="xml" /> 

     <batchtest todir="${reports}"> 
      <fileset dir="${src.dir}"> 
       <include name="test1.java" /> 
       <include name="test2.java" /> 
       <include name="test3.java" /> 
       <include name="test4.java" /> 
       <include name="test5.java" /> 
      </fileset> 
     </batchtest> 
    </junit> 
    <emma enabled="${emma.enabled}"> 
     <report sourcepath="${src.dir}" sort="+block,+name,+method,+class" metrics="method:70,block:80,line:80,class:100">   
      <fileset dir="${coverage.dir}"> 
       <include name="*.emma" /> 
      </fileset> 
      <!-- for every type of report desired, configure a nested 
     element; various report parameters can be inherited from the parent <report> 
     and individually overridden for each report type:--> 
      <txt outfile="${coverage.dir}/coverage.txt" depth="package" columns="class,method,block,line,name" /> 
      <xml outfile="${coverage.dir}/coverage.xml" depth="package" /> 
      <html outfile="${coverage.dir}/coverage.html" depth="method" columns="name,class,method,block,line" /> 
     </report> 
    </emma> 
</target> 

をし、 emmaタスク。

 
m1> ${ANT_HOME}/bin/ant -f nnbuild.xml -verbose mutant-test-run 
Apache Ant(TM) version 1.8.2 compiled on July 5 2011 
Buildfile: (Elided path here)/nnbuild.xml 
Detected Java version: 1.6 in: /usr/lib64/jvm/java-1.6.0-sun-1.6.0/jre 
Detected OS: Linux 
parsing buildfile (Elided path)/nnbuild.xml with URI = file:(Elided path)/nnbuild.xml 
    Project base dir set to: (Elided path) 
    parsing buildfile jar:file:(Elided ANT_HOME path)/ant/lib/ant.jar!(Elided ANT_HOME path)/ant/antlib.xml with URI = jar:file:(Elided ANT_HOME path)/ant/lib/ant.jar!/org/apache/tools/ant/antlib.xml from a zip file 
    Build sequence for target(s) `mutant-test-run' is [mutant-test-run] 
    Complete build sequence is [mutant-test-run, emma, clean, init, compile, run, emma-run, merge, all, sofya, ] 

    mutant-test-run: 
    [mkdir] Skipping (Elided path)/reports because it already exists. 
    [emma] [EMMA v2.0, build 5312 (2005/06/12 19:32:43)] 
     [report] processing input files ... 
     [report] 1 file(s) read and merged in 48 ms 
     [report] nothing to do: no runtime coverage data found in any of the data files 

BUILD SUCCESSFUL 
Total time: 0 seconds 
m1> 

JUnitテストのみを行うには、どのようにantターゲットを設定しますか?

答えて

0

あなたのファイルセットがbatchtest要素のために間違っているように見え、私は多分あなたは**を含める必要があると思う:

<batchtest todir="${reports}"> 
    <fileset dir="${src.dir}"> 
     <include name="test1.java" /> 
     <include name="test2.java" /> 
     <include name="test3.java" /> 
     <include name="test4.java" /> 
     <include name="test5.java" /> 
    </fileset> 
</batchtest> 

ページJUnit Task上の例から、あなたが使用することができます。

<batchtest fork="yes" todir="${reports.tests}"> 
    <fileset dir="${src.tests}"> 
     <include name="**/*Test*.java"/> 
     <exclude name="**/AllTests.java"/> 
    </fileset> 
</batchtest> 

ここで**はどのサブディレクトリでも意味します。

もう一つの例:

<batchtest todir="${collector.dir}" unless="hasFailingTests"> 
    <fileset dir="${collector.dir}" includes="**/*.java" excludes="**/${collector.class}.*"/> 
</batchtest> 
関連する問題