0

File パラメーターを取るメソッドに渡す PDF ファイルを読み取る junit テストをセットアップしようとしています。私が抱えている問題は、pdfファイルが見つからないように見えることです。

これは、単一のテストとして Eclipse 内で機能し、テストが自動ビルド用の jar ファイルに圧縮された後に機能する必要があります。

簡単にするために、私はハガキ.pdf を junit テスト クラスのすぐ隣に置きました。これが私が試した最後のことです。

URL url = getClass().getClassLoader().getResource("postcard.pdf");
URI uri = url.toURI();
File file = new File(uri);
javamailService.sendMessage(MAILUSER, REPLY_TO, SUBJECT, file, MimeType.pdf);
fail("Not yet implemented");

助けてください?

4

4 に答える 4

1

通常、テスト データで機能するようにパスを変更するだけで済みます。

File file = new File("./testdata/pdftest/test.pdf");

しかし、あなたのケースでうまくいかない場合は、IFileProviderインターフェースを定義してファイルを「モック」してください。

public interface IFileProvider {
  File getFile(URI uri);
}

junit テストでは、

class DummyPdfFileProvider implements IFileProvider {
    File getFile(URI uri) {
       // ignore uri
       return new File("./testdata/test.pdf");
    }
}

実際のコードでは、

class PdfFileProvider implements IFileProvider {
    File getFile(URI uri) {
       // ignore uri
       return new File(uri);
    }
}

実際のコードを変更して、PdfFileProvider

IFileProvider fileProvider = new PdfFileProvider();

URL url = getClass().getClassLoader().getResource("postcard.pdf");
URI uri = url.toURI();
File file = fileProvider.getFile(uri);
javamailService.sendMessage(MAILUSER, REPLY_TO, SUBJECT, file, MimeType.pdf);
// and remove the fail below:
//fail("Not yet implemented");
于 2013-02-18T16:31:23.537 に答える
0

test.pdfをルートレベルに維持して、以下のコードを試してください。また、Java Mails Service APIは、添付ファイルをInputStream/InputStreamSourceとして追加することをサポートしています。

InputStream configStream = getClass().getResourceAsStream("test.pdf");
于 2013-02-18T16:56:10.683 に答える
0

ファイル(postcard.pdf)をクラスパスに含めることができます--jarに追加し、それをクラスパスに追加します。次に、getAsResourceStreamを使用してファイルを取得し、ストリームを一時ファイルに書き込みます。

于 2013-02-18T16:59:50.740 に答える
0

相対パスをコーディングするだけになりました。助けてくれてありがとう。

于 2013-02-22T17:12:00.207 に答える