2012-02-21 18 views
0

私は興味深い問題があります。私はspring-conf.xmlファイルで2つのWebサービスを定義しています。同じパッケージに2つのテストクラスがありますすべてのクラスには、このspring-conf.xmlファイルへのリンクがあり、特定のWebサービスを呼び出すことができます。 私はテストクラスの一つから豆を得ることができますが、他のクラスからは豆を取得することはできませんし、コードは両方のクラスで同等です。一テストで私は別のXMLで見つけることができません

私は私のプログラムは、ばねのconfファイルを見つけることができない第二一本

import org.springframework.context.ApplicationContext; 
import org.springframework.context.support.ClassPathXmlApplicationContext; 

public class WSSecondTest { 

private ApplicationContext context2 = new ClassPathXmlApplicationContext(
     "WEB-INF/spring-conf.xml"); 
private WSSecond ws = (WSSecond) context2 
     .getBean("serviceSecondDefault"); 

を持っていますが、他に、他の一つに、この

import org.springframework.context.ApplicationContext; 
import org.springframework.context.support.ClassPathXmlApplicationContext; 

public class WSFirstTest { 

private ApplicationContext context = new ClassPathXmlApplicationContext(
     "WEB-INF/spring-conf.xml"); 
private WSFirst ws = (WSFirst) context 
     .getBean("serviceFirstDefault"); 

を持っています1つは可能です。 どうしたのですか?

PSリモートから呼び出すと両方のwservicesが正常に動作しますが、ローカルでのみこの問題が発生します。

テストのエラー:

org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [WEB-INF/spring-conf.xml]; nested exception is java.io.FileNotFoundException: class path resource [WEB-INF/spring-conf.xml] cannot be opened because it does not exist 

はあなたのアドバイスをいただき、ありがとうございます。

+0

これらのJUnitテストは並行して実行されていますか? – home

+0

はい、正確です。私はジュニットと1つ1つ、個別に実行します。 –

答えて

1

私は春完全修飾クラスパスの場所として「/」始まる同じテストクラスが定義されているパッケージとpathesから相対パスとして「/」起動せずにアプリケーション・コンテキスト・パスを解釈知っているよう(少なくともtesting environment)。たぶんあなたは、開始 "/"を使用しようとする必要があります。

異なるテスト実行構成で問題が発生していました(下記のコメントを参照)。

+0

あなたの答えに感謝します。コンパートメントは異なり、起動するテスト、パスは同じで、両方のクラスが同じパッケージに含まれていますが、私のファイルを見つけることができ、他のものは見つけることができないので、これは意味がありません。彼らは私が同じ道でなければならないと言ったのと同じ場所に位置しているからです。とにかく私はあなたが言ったことを試みたが、それは動作しませんでした –

+1

@Tommaso Bicegoどのようにテストを実行しますか?たぶんあなたの実行構成(クラスパスなど)に違いがあります。 – FrVaBe

+0

あなたは天才です。私は実行コンフィギュレーションで一瞬前に見ましたが、最初のコンフィギュレーションではWebContentフォルダがあり、もう1つは設定されていませんでした。私はそれを他の実行コンフィギュレーションに追加し、今は完全に動作します。ありがとうございました! –