5

最近変更したコードをテストするためにJavaユニットテストを作成しています。ただし、私がテストしているメソッドは、ResourceBundleを使用するクラスをインスタンス化します…</ p>

ResourceBundle.getBundle("businessVariables").getString("product.name"));

リソースファイルは、次のWebパッケージにあります。Mycompany_web/src/main/webapp/WEB-INF/classes/businessVariables.properties

私のテストは私のxmlパッケージにありますMycompany_xml/src/test/java/uk/co/mycompany/xmlapi/RequestProcessorTestNew.java

通常の実行時にはリソースバンドルにアクセスできますが、単体テストの実行時にはアクセスできません。このエラーがスローされます…</p>

Testcase: testCreateInitialStatusResponse(uk.co.mycompany.xmlapi.RequestProcessorTestNew):  Caused an ERROR
null
java.lang.reflect.InvocationTargetException
    at uk.co.mycompany.xmlapi.RequestProcessorTestNew.testCreateInitialStatusResponse(RequestProcessorTestNew.java:62)
Caused by: java.lang.ExceptionInInitializerError
    at uk.co.mycompany.xmlapi.RequestProcessorImpl.createInitialStatusResponse(RequestProcessorImpl.java:812)
Caused by: java.util.MissingResourceException: Can't find bundle for base name businessVariables, locale en_US

私は何をすべきか?テストでリソースバンドルを確認できるようにすることはできますか?どういうわけかコードが見ることができるモックリソースファイルをどこかに作成できますか?

4

2 に答える 2

6

Mavenアーキタイプに従ってプロジェクト構造を構築した場合、リソースバンドルは理想的にはMycompany_xml / src / test/resourcesにある必要があります。次に、mvn testを使用して、プロジェクトホーム(つまりMycompany_xmlディレクトリ)から単体テストを実行できます。

戦争をパッケージ化するときに、maven-assembly-pluginを使用してリソースバンドルをMycompany_xml / src / test/resourcesから戦争にコピーします。

于 2012-05-30T13:00:01.550 に答える
1

追加

Mycompany_web/src/main/webapp/WEB-INF/classes/

ユニットテストが実行されているクラスパスへ。

于 2012-05-30T14:04:19.143 に答える