2012-11-19 11 views
5

mam mrówki wykonujące słoik z następującego koduPrzechodząc właściwości systemowe Java do testów mrówek

<target name="start.my.jar" description="start my jar"> 
    <echo message="Starting the jar" /> 
    <java jar="${jars.dir}/${my.stub.jar}" fork="true" dir="${jars.dir}" spawn="true"> 
      <sysproperty key="properties.filename" value="${basedir}/path/path/path/filename.properties"/> 
     <arg value="start" /> 
    </java> 
</target> 

wewnątrz słoika istnieje klasa z następującego kodu

public static MyFacade createFacade() throws FileNotFoundException, IOException { 
    return createFacade(System.getProperty(properties.filename)); 
}  

a potem jest mrówka Cel testu skonfigurowany jako ten

Moje testy w tym docelowym module testowym nie pozwalają uzyskać właściwości dla pliku i określonego w celu start.my.jar. Czy coś jest nie tak?

SEVERE: The RuntimeException could not be mapped to a response, re-throwing to the HTTP container 
[junit] java.lang.NullPointerException 
[junit]  at java.io.File.<init>(File.java:222) 
[junit]  at com.mycompany.myproduct.sdk.facade.MyFacadeFactory.getInputStream(MyFacadeFactory.java:47) 
[junit]  at com.mycompany.myproduct.sdk.facade.MyFacadeFactory.loadFacade(MyFacadeFactory.java:43) 
[junit]  at com.mycompany.myproduct.sdk.facade.MyFacadeFactory.createFacade(MyFacadeFactory.java:32) 
[junit]  at com.mycompany.myproduct.sdk.facade.MyFacadeFactory.createFacade(MyFacadeFactory.java:28) 
[junit]  at com.mycompany.myproduct.sdk.resources.impl.TransactionResourceImpl.<init>(TransactionResourceImpl.java:70) 
[junit]  at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
[junit]  at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) 
[junit]  at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) 
[junit]  at java.lang.reflect.Constructor.newInstance(Constructor.java:513) 
[junit]  at com.sun.jersey.server.spi.component.ResourceComponentConstructor._construct(ResourceComponentConstructor.java:191) 
+1

spróbować powrócić createFacade (System.getProperty ("properties.filename")); – user1097489

+0

Popełniłem błąd, że jest to właściwość. Nazwa pliku, ale nadal nie działa – ThaSaleni

+0

czy mógłbyś opublikować stacktrace? – user1097489

Odpowiedz

1

Funny tyle to działało:

<jvmarg value="- Dproperties.filename=${basedir}/path/path/path/filename.properties"/> 

jeden użyłem wcześniej:

<sysproperty key="" value=""/> 

nigdy nie pracował

4

To dlatego, że dodać właściwość wyłącznie cel java, który jest niezależnym środowisku wykonawczym. Obiekt docelowy junit określa nowe środowisko (ustawiając dla niego niektóre przełączniki JVM, należy również określić właściwości systemu).

Spróbuj tego:

<junit ...> 
    <sysproperty key="properties.filename" 
      value="${basedir}/path/path/path/filename.properties"/> 
    .... 
</junit> 

Inną alternatywą jest uruchomienie ant zadania z kluczem każdym czasie -Dproperties.filename=... (można ustawić, że w konfiguracjach run zewnętrznych w Eclipse). Wadą jest jednak to, że musisz pamiętać o tym za każdym razem, gdy chcesz uruchomić zadanie (np. W kompilacji CI lub ze świeżym zakupem).

+0

Zrobiłem to, wciąż otrzymuję zerowy wskaźnik ... może powinienem również opublikować ślad stosu – ThaSaleni

+0

Muszę przekazać właściwość jako konfigurację do pliku kompilacji, ponieważ potrzebuję go do całkowitego automatycznego tworzenia CI – ThaSaleni

+0

ten pracował jeden Kiedyś przed” nigdy nie pracował – ThaSaleni

Powiązane problemy