Script Ant pour cobertura, tests unitaires
Bonjour à tous !
Voila je suis entrain actuellement de finaliser un petit projet java (je suis étudiant en deuxième année de DUT informatique). J'essaye donc de faire de la qualité logiciel, et plus précisément d'automatiser mes tests. Je me suis donc penché sur Ant. Et malheureusement pour le moment je bloque sur pas mal de choses. J'ai bien fait des recherches mais à force j'ai abandonné pour trouvé quelque chose de simple...
Enfin trois précisément, mes test unitaires avec junit, la création de mon .jar et mon rapport de couverture du code avec cobertura. Je vais tenter d'expliquer au mieux mon problème. Mon workspace ressemble à peu près à ça :
Pour Cobertura : J'obtiens une erreur de ce type :
/home/ludo/Documents/Xml/build.xml:59: java.lang.NoClassDefFoundError: org/apache/log4j/Logger
at net.sourceforge.cobertura.util.CommandLineBuilder.<clinit (CommandLineBuilder.java:76)
at net.sourceforge.cobertura.ant.ReportTask.execute(ReportTask.java:89)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
Et pour JUnit : Mon soucis c'est que quand je lance mes tests depuis Eclipse chaque test est passé avec succès mais quand je le lance depuis un terminal (je bosse sous nux), j'obtiens ceci :
Et donc enfin mon .jar est bien créé, mais le soucis c'est qu'il est trop léger et les libs ne doivent pas être incluses, il y a moyen d'obtenir un jar complet comme sous eclipse ?
Donc je vais conclure par prier pour avoir une réponse ^^ , et par vous laisser mon script ant :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133
| <project name="xml" basedir="." default="coverage-report">
<property name="src.dir" value="src" />
<property name="build.dir" value="build" />
<property name="classes.dir" value="${build.dir}/classes" />
<property name="jar.dir" value="${build.dir}/jar" />
<property name="main-class" value="lanceur.Main" />
<property name="report.dir" value="${build.dir}/report" />
<property name="test-class" value="**/*Test*.*" />
<property name="lib.dir" value="data" />
<property name="cobertura.dir" value="${build.dir}/cobertura" />
<property name="coveragereport.dir" value="${build.dir}/coverage" />
<property name="report.dir" value="${build.dir}/report" />
<property name="instrumented-classes.dir" value="${build.dir}/instruments" />
<path id="classpath">
<fileset dir="${lib.dir}" includes="**/*.jar"/>
</path>
<target name="instrument-classes" depends="compile">
<path id="cobertura.class.path">
<pathelement location="${lib.dir}/cobertura.jar" />
<pathelement location="${lib.dir}/jdom-2.0.4.jar" />
<pathelement location="${lib.dir}/junit-4.10.jar" />
<pathelement location="${lib.dir}/miglayout-4.0.jar" />
</path>
<taskdef classpathref="cobertura.class.path" resource="tasks.properties"/>
<mkdir dir="${report.dir}"/>
<cobertura-instrument todir="${build.dir}/instruments">
<fileset dir="${classes.dir}" includes="**/*.class" />
</cobertura-instrument>
</target>
<target name="tests-and-coverage" depends="instrument-classes">
<mkdir dir="${coveragereport.dir}"/>
<mkdir dir="${report.dir}"/>
<junit printsummary="yes" fork="yes">
<classpath>
<pathelement location="${instrumented-classes.dir}"/>
<pathelement location="${classes.dir}"/>
</classpath>
<formatter type="xml"/>
<batchtest fork="yes" todir="${report.dir}">
<fileset dir="${src.dir}">
<include name="**/*Test*.java"/>
</fileset>
</batchtest>
</junit>
<antcall target="tests-report" />
<antcall target="coverage-report" />
</target>
<target name="coverage-report" >
<mkdir dir="${cobertura.dir}"/>
<taskdef classpath="${lib.dir}/cobertura.jar" resource="tasks.properties" />
<cobertura-report srcdir="${src.dir}" destdir="${cobertura.dir}"/>
</target>
<target name="clean">
<delete dir="${build.dir}" />
</target>
<target name="compile">
<mkdir dir="${build.dir}" />
<mkdir dir="${classes.dir}" />
<mkdir dir="${build.dir}/lib" />
<java jar="${jar.dir}/${app.name}-${app.version}.jar" fork="true">
<classpath refid="classpath" />
</java>
<javac srcdir="${src.dir}" destdir="${classes.dir}" debug="true" classpathref="classpath" />
</target>
<target name="jar-distribution">
<mkdir dir="${jar.dir}" />
<jar destfile="${jar.dir}/xml.jar">
<manifest>
<attribute name="Main-Class" value="${main-class}" />
</manifest>
<fileset dir="${classes.dir}">
<include name="**/*.class" />
<exclude name="**/Test*.java" />
</fileset>
</jar>
</target>
<target name="run">
<java jar="${jar.dir}/xml.jar" fork="true" />
</target>
<target name="jar-test">
<mkdir dir="${jar.dir}" />
<jar destfile="${jar.dir}/xmltest.jar">
<fileset dir="${classes.dir}">
<include name="**/*.class" />
</fileset>
</jar>
</target>
<target name="junit">
<mkdir dir="${report.dir}" />
<junit printsummary="yes" haltonfailure="yes" fork="yes">
<classpath location="${classes.dir}" />
<formatter type="xml" />
<batchtest fork="yes" todir="${report.dir}">
<fileset dir="${src.dir}">
<include name="**/*Test*.java" />
<exclude name="**/.SVN/*.*" />
</fileset>
</batchtest>
</junit>
</target>
<target name="junitreport">
<junitreport todir="${report.dir}">
<fileset dir="${report.dir}" includes="TEST-*.xml" />
<report todir="${report.dir}" />
</junitreport>
</target>
<target name="javadoc" depends="compile">
<javadoc sourcepath="${src.dir}"
destdir="${build.dir}/doc"
version="true"
use="true"
linksource="true"
windowtitle="Javadoc" >
<classpath refid="classpath" />
</javadoc>
<fileset dir="${src.dir}}" defaultexcludes="yes">
<include name="**/*.java"/>
</fileset>
</target>
</project> |