オプションA)ServletContext.getResourceXXX()を使用します
AquillarianMockHttpSessionとMockServletContextが必要です。例えば:
@Test
public void myTest()
{
HttpSession session = new MockHttpSession(new MockServletContext());
ServletLifecycle.beginSession(session);
..testCode..
// You can obtain a ServletContext (will actually be a MockServletContext
// implementation):
ServletContext sc = session.getServletContext();
URL url = sc.getResource("/WEB-INF/testdata.xml")
Path resPath = new Path(url);
File resFile = new File(url);
FileReader resRdr = new FileReader(resFile);
etc...
..testCode..
ServletLifecycle.endSession(session);
}
次の場所でリソースファイルとサブディレクトリを作成できます。
- Webモジュールのドキュメントルート-リソースはブラウザとクラスからアクセスできます
- WEB-INF /classes/-リソースはクラスにアクセス可能です
- WEB-INF / lib/*。jarsourcejar-クラスにアクセス可能
- WEB-INF / lib/*。jar専用のリソース専用jar-クラスにアクセス可能
- ディレクトリ内で直接WEB-INF/-クラスにアクセス可能。これがあなたが求めているものです。
すべての場合において、リソースには以下を介してアクセスできます。
URL url = sc.getResource("/<path from web doc root>/<resourceFileName>");
OR
InputStream resIS = sc.getResourceAsStream("/<path from web doc root>/<resourceFileName>");
>>
これらはWARファイルにパッケージ化され、デプロイされたアプリサーバー上のディレクトリに展開されるか、アプリサーバー上のWARファイル内にとどまる可能性があります。どちらの方法でも-リソースにアクセスする場合と同じ動作:ServletContext.getResourceXXX()を使用します。
一般原則として、(5)最上位のWEB-INFディレクトリ自体はサーバーによる使用を目的としていることに注意してください。Webリソースをここに直接配置したり、独自のディレクトリをここに直接作成したりしないのは「礼儀正しい」ことです。代わりに、上記の(2)を使用することをお勧めします。
JEE5チュートリアルWebモジュール
JEE6チュートリアルWebモジュール
オプションB):Class.getResourceXXX()を使用します
まず、リソースをWEB-INFフォルダーからWEB-INF / classesに(またはjar WEB-INF / lib / *。jar内に)移動します。
テストクラスが次の場合:
- ファイルWEB-INF/classes / com / abc / pkg / test/MyTest.class内のcom.abc.pkg.test.MyTest
そして、あなたのリソースファイルは
- WEB-INF / classes / com / abc / pkg / test / resources / testdata.xml(またはjarファイル内の同等のもの)
Java ClassLoaderを介して、相対ファイル位置を使用してファイルにアクセスします-クラスパスに関連するフォルダー/ジャーを検索します。
java.net.URL resFileURL = MyTest.class.getResource("resources/testdata.xml");
File resFile = new File(fileURL);
OR
InputStream resFileIS =
MyTedy.class.getResourceAsStream("resources/testdata.xml");
完全なパッケージのような資格を使用して、Java ClassLoaderを使用してファイルにアクセスします-クラスパスに関連するフォルダ/Jarを検索します:
java.net.URL resFileURL = MyTest.class.getResource("/com/abc/pkg/test/resources/testdata.xml");
File resFile = new File(fileURL);
OR
InputStream resFileIS =
MyTest.class.getResourceAsStream("/com/abc/pkg/test/resources/testdata.xml");
OR
java.net.URL resFileURL = MyTest.class.getClassLoader().getResource("com/abc/pkg/test/resources/testdata.xml");
File resFile = new File(fileURL);
OR
InputStream resFileIS =
MyTest.class.getClassLoader().getResourceAsStream("com/abc/pkg/test/resources/testdata.xml");
それがそれを釘付けにすることを願っています!@B)