# Problem mit Ant Classpath und Junit: Relative Pfade



## Ninca (9. Dez 2008)

Hallo,

ich habe ein Problem mit *relativen Pfaden*, die aus meinem Ant-Task für das Testen nicht richtig aufgelöst werden, aus meinem Ant-Task, um ein Java Programm laufen zu lassen, aber schon - und das obwohl ich den gleichen Classpath für beide definiert habe. :?  

Ich benutze Junit 4.5.

Hier ein Auszug: aus meiner *build.xml*: 


```
<property name="build" value="${basedir}/build" />
<property name="classes" value="${build}/bin" />
<property name="config" value="${classes}/config" />

<path id="classpath">
	<pathelement location="${lib}" />
	<fileset id="lib" dir="${lib}">
		<include name="**/*.jar" />
	</fileset>
	<pathelement location="${config}" />
	<fileset id="config" dir="${config}/">
		<include name="**/*.properties" />
		<include name="**/*.txt" />
	</fileset>
	<pathelement location="${classes}" />
</path>

<target name="run" depends="compile">
	<java fork="true" dir="${classes}" classname="${mainclass}">
		<classpath refid="classpath" />
	</java>
</target>

<target name="test" depends="compile">
	<junit printsummary="yes" haltonfailure="yes" showoutput="yes">
		<classpath refid="classpath" />
		<batchtest fork="yes">
			<fileset dir="${src}" >
				<include name="**/*Test.java"/>
			</fileset>
		</batchtest>
	</junit>
</target>
```


Lasse ich nur die Nicht-Test-Klassen laufen, habe ich werden alle relativen Pfade (Projektwurzelverzeichnis/
Pfad Zu Config/Relative Pfadangabe) richtig aufgelöst. 
In einer Testfall-Klasse werden relative Pfade fälschlicherweise als (Projektwurzelverzeichnis/Relative Pfadangabe) aufgelöst, das gleiche passiert, wenn ich eine Methode einer Nicht-Testklasse aufrufe, die eine Datei benötigt.   ???:L

(Junit Testfälle ohne relative Pfade funktionieren, abgesehen von den JUnit 4 Methoden setUpBeforeClass, tearDownAfterClass, wobei ich mich mit dem Grund dafür noch nicht auseinandergesetzt habe.) 

Meine Projektstruktur sieht folgendermaßen aus:

Projektwurzelverzeichnis 

```
- src
                                            - config
                                            - java
                                            - test
                                    
                                    - build
                                            - bin
                                                   - config
                                                   - java
                                                   - test
```
:?: Hat irgendjemand eine Ahnung woran die richtige Auflösung der Pfade scheitert?


----------



## Wildcard (9. Dez 2008)

Ant Scripte beziehen sich immer auf $base.dir Java Programme auf user.dir


----------



## Ninca (10. Dez 2008)

Erst einmal danke für die Antwort. Leider konnte ich mein Problem immer noch nicht lösen.

Ich habe nun versucht den Ant Test Task für JUnit zu erweitern um   <sysproperty key="user.dir" value="${classes}"/> .

Lasse ich mir nun das aktuelle Arbeitsverzeichnis ausgeben ( System.getProperty("user.dir");  ), dann stimmt es mit dem in den eigentlichen Java Klassen überein.

Auch der Pfad zu einer Datei ( file.getAbsolutePath();  ) scheint zu stimmen, aber die Datei wird trotzdem nicht gefunden ( file.exists();   liefert false).

Ich steh grad echt auf dem Schlauch, kann mir jemand nochmal helfen?


----------

