2011-01-21 28 views
5

Tôi có một thư mục với một loạt các bài kiểm tra JUnit trong dự án của tôi. Cho đến nay tôi đã sử dụng mục tiêu riêng cho từng bài kiểm tra đơn vị. Ví dụ:Chạy tất cả các bài kiểm tra đơn vị với trình tạo Ant

<target name="MyTest"> 
     <mkdir dir="${junit.output.dir}"/> 
     <junit fork="yes" printsummary="withOutAndErr"> 
      <formatter type="xml"/> 
      <test name="tests.MyTest" todir="${junit.output.dir}"/> 
      <classpath refid="MyProject.classpath"/> 
     </junit> 
    </target> 

Phương pháp này yêu cầu tôi thay đổi tệp xây dựng mỗi khi tôi thêm kiểm tra Đơn vị.
Tôi muốn có thể chạy tất cả các bài kiểm tra đơn vị trong dự án với một mục tiêu trình xây dựng Ant đơn.
Có thể làm được không?

Trả lời

9

Yep nó là, bạn cần phải nhìn vào thẻ fileset, ví dụ:

<junit printsummary="yes" haltonfailure="yes"> 
    <classpath> 
    <pathelement location="${build.tests}"/> 
    <pathelement path="${MyProject.classpath}"/> 
    </classpath> 

    <formatter type="xml"/> 

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

Phần quan trọng là việc sử dụng fileset và/mẫu ký tự đại diện glob để phù hợp với tên của các bài kiểm tra. Tài liệu đầy đủ về tác vụ junit có các ví dụ tại đây:

http://ant.apache.org/manual/Tasks/junit.html

3

Yep! Chúng tôi làm điều đó bằng cách sử dụng một lệnh batch antest. Trông như thế này:

 <batchtest todir="${junit.report.dir}"> 
      <fileset dir="${basedir}\test\unit"> 
       <include name="**/*Test.java" /> 
      </fileset> 
     </batchtest> 

Google nó, nó sẽ sắp xếp bạn ra

Các vấn đề liên quan