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 : Sélectionner tout - Visualiser dans une fenêtre à part
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>