2016-09-20 4 views
1

サーバが稼働していなくても、JUnit Testとして実行すると、私はまだSpring Beanとプロパティファイルをロードできます。「SpringをJUnitテストとして実行する」ときに内部的にはどうなりますか?

どうしてですか?

テストクラスをコンパイルするJVMのインスタンスが作成されていますか?

また、クラスパスも定義していません。

デフォルトのクラスパスは何ですか?私の春の豆はどうやって見つけられますか?

相対パスを指定する必要があるフォルダに関してプロパティファイルの場所を指定したいのですが?

答えて

1

あなたのSpring Beanはあなたのサーバーに依存しません。あなたのアプリケーションが実行されると、例えばmainメソッドや単体テストが実行されて初期化されます。

春が動作する方法は、次のように定義されるいずれかの可能性が、あなたの豆を定義するアプリケーション・コンテキストを持っているということです。

Javaクラス - Javaで定義されている場合はクラスが@Configurationアノテーションを持つことになります豆はまた、同様に、アノテーションによって定義することができます

<bean id="myBean" class="com.my.package.MyBean"> 
    <constructor-arg ref="anotherBean"/> 
</bean> 

ノートに同じように見えるかもしれませんファイルにエントリを持つことになります - そして、あなたの豆は@Bean注釈

XMLファイルでマークされます。

2つの設定、1つのサービスビーン用のアプリケーション、環境に応じて異なるデータソースを定義する1つのインフラストラクチャ設定が理想的です。インフラストラクチャの設定を環境に応じて変更できることは、サーバー上でローカルでもテストを実行できる主な理由の1つです。インフラストラクチャ設定用に定義されたプロファイルがあることがわかります。つまり、さまざまな環境でテストを実行できるようになっています。ローカルマシンにSQLサーバーがないため、インメモリデータベースを代わりに使用します。

アプリケーションが実行されると、単体テストによるこのシナリオでは、Spring Beanの定義にアクセスし、Beanのインスタンス化を開始します(この間にテストの開始時に若干の遅延が見られることがあります)あなたのアプリケーションは、あなたのテストの実行を開始するのが良いです。あなたのテストクラスの上部に

あなたには、いくつかの注釈を持っているかもしれません: @RunWith(SpringJUnit4ClassRunner.class) - Javaの設定 @ContextConfigurationを使用している場合、ばね支持

でテストクラスの実行を作る(クラス= MYCONFIG .class)

xml configを使用する場合 @ContextConfiguration( "classpath:com/my/app/resources/my-test-config。xml "

あなたの質問を完全に理解するのは難しいですが、クラスの@ContextConfigurationアノテーションはクラスのどこから豆を拾うのかを教えてくれますが、データソースが何であるかを定義します。

デフォルトのクラスパスは、プロジェクトが情報を見つけることができ

以上使用するように設定されているものになります:calsspathは、あなたのプロジェクトのために定義されているものであれば、それはあなたのApplicationContextのファイルをロードする必要がありhttp://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/

+0

を@ContextConfigurationを書くべきではありません。どのような場合でも、JUnitを実行するので、クラスパス内のすべてのクラスをロードする必要がありますが、それは起こりません。 –

+0

はい、私の間違いですが、Junitを走らせている間にクラスパスが印刷されました。プロジェクトのクラスパスが表示されました。 –

0

これは、EclipseでjUnitプラグインを実行するかどうかによって異なります。すべての春の魔法はjUnit自体ではなく特定のランナーによるものです。すべてのスプリング仕様はコンテキストファイルで定義されていますが、オーバーライドすることができます。コンテキストファイルを定義すると、そのファイルが使用されます。もしそうでなければ、いくつかのデフォルトが使用されます。

関連する問題