2011-06-28 6 views
2

私はFitnesseと一緒に走りたい、そしてSpringを使うテストフィクスチャを持っています。私はClasspathXmlApplicationContextでSpringアプリケーションのコンテキストをロードできませんでしたが、私はそれを理解できていないクラスパス設定であると確信しています。FitnesseテストフィクスチャでSpringのアプリケーションコンテキストをロードするには?

これは私の設定です。

Project contents

あなたが見ることができるように、fitnesse.jarは、プロジェクト内にあるので、私はどこにでもますFitnesseサーバーおよびテストを実行することができ、私はプロジェクトの作業コピーを持っている(すべてのwikiファイルが内側にありますFitNesseRootフォルダ)。 binは、プロジェクトの出力フォルダです(すべての.classが存在します)。

さて、コード:

InventarioQueryTest(!ますFitnesseからwikiページ、パス宣言に気づく)

!define TEST_SYSTEM {slim} 

!path ../bin 
!path ../web/WEB-INF/lib/**.jar 

|import        | 
|com.softclear.inventario.test.fitnesse| 


|Query:listar status   | 
|id|nombre|entidad|descripcion| 

ListarStatus.java(ますFitnesseによって呼び出されたテキスト・フィクスチャ)

public class ListarStatus { 

    private ServicioStatus serv; 
    private ClassPathXmlApplicationContext ctx; 

    //fitnesse calls the constructor 
    public ListarStatus(){ 
     ctx = new ClassPathXmlApplicationContext(new String[] { 
       "applicationContext-ListarStatus.xml", 
       "applicationContext-dao.xml", 
       "applicationContext-hibernate.xml"}); 

      //performs dependency injection of DAO and HibernateSession 
     serv = (ServicioStatus) ctx.getBean("servicioStatus"); 
    } 

    //and the query method is the test 
    public List<Object> query() { 
     List<Status> lista = serv.listarStatus(); 
     QueryResultBuilder builder = new QueryResultBuilder(Status.class); 
     QueryResult result = builder.build(lista.iterator()); 
     return result.render(); 
    } 
} 

I私のプロジェクトの作業コピーからjava -jarでfitnesseを実行します。私は、テストを実行するときに、これはますFitnesseが実行コマンドです:

java -cp fitnesse.jar;../bin;C:\Dev\WS\softclear\SistemaInventario\fitnesse\..\web\WEB-INF\lib\ajax\AjaxFileUpload-0.03.jar;%the.rest.of.the.web-inf/lib.jars...% fitnesse.slim.SlimService 8086 

とテストでこのエラーを生成し、そのすべて:私は理解してFASとして

java.io.FileNotFoundException: class path resource [applicationContext-ListarStatus.xml] cannot be opened because it does not exist 

パス!。 ./binは、クラスパス(java -cp呼び出し)に含めるべきすべてのサブフォルダとものを示すはずですが、明らかにそうではありません...

アイデア?あなたのお時間をありがとう!

答えて

2

[OK]をので、私はListarStatusクラスでこれを行うことによって、それを解決:ApplicationContextの-ListarStatus.xmlファイルは相対パスではなく、ファイルの名前だけを持っていることを

public ListarStatus() { 
     ctx = new ClassPathXmlApplicationContext(new String[] { 
       "/com/softclear/inventario/test/fitnesse/applicationContext-ListarStatus.xml", 
       "applicationContext-dao.xml", 
       "applicationContext-hibernate.xml"}); 

     serv = (ServicioStatus) ctx.getBean("servicioStatus"); 
    } 

お知らせ。

は(:http://freejavaclass.com/articles/j2ee/spring/spring_loading_types_ways.jspこれ、ClassPathXMLの一部を...読んで)私は理解ようClassPathXmlApplicationContext がクラスパスにない検索どこでもをしていることが判明します。 少なくとも春2にはない

それはFitnesseとは関係がありませんでしたが、それはすべての春でした...

関連する問題