2011-10-27 11 views
22

Chcę załadować zasób, który znajduje się wewnątrz folderu/datatest w moim obszarze roboczym projektu. Tak więc cały plik będzie /datatest/a.xml .. Jak uzyskać bezwzględną ścieżkę tego zasobu, który jest mi potrzebny w testach jednostkowych, ponieważ test jednostki może być uruchamiany na dowolnej maszynie, której nie chcę na twardym kodzie, ale zamiast korzystać z programu ładującego klasy? Jak mam to zrobić ?Użyj groovy, aby załadować zasób testowy z mojej struktury projektu.

+0

Czy Twój projekt roboczy na ścieżce klasy? Zwykle nie. W takim przypadku program ładujący klasy nie może go zobaczyć. –

+0

Tak, obszar roboczy projektu jest zawarty w ścieżce klasy – Phoenix

+0

Możesz również sprawdzić [tę odpowiedź] (http://stackoverflow.com/questions/14162100/convert-a-classpath- filename-to-a-real-filename/14162103 # 14162103) – GreenGiant

Odpowiedz

38

Jeśli jest w ścieżce klas, to powinno działać:

String xmlString = this.getClass().getResource('/datatest/a.xml').text 
+0

Jest to plik ".lst" ... na przykład "a.lst" ... Dodałem go do ustawień zasobów kompilatora w systemie intelliJ, ale nadal nie powodzenia – Phoenix

+1

W takim przypadku nie jest to w ścieżce klasy –

+0

Nie zdefiniowałem wyraźnie zmiennej CLASS_PATH, ale okazało się, że obecny katalog został uwzględniony w mojej efektywnej/domyślnej CLASS_PATH przez uruchomienie tego Groovy One-Liner: 'this.class .classLoader.rootLoader.URLs.each {println it} '- potem stało się jasne, gdzie powinienem zapisać pliki, abym mógł' getResource' je otworzyć później. – MarkHu

Powiązane problemy