15

CommonsMultipartFileオブジェクトをパラメーターとして受け取るjunitテストメソッドがあります。

FileItemオブジェクトを作成して、コンストラクターに渡すことができるようにしようとしています。

CommonsMultipartFile(org.apache.commons.fileupload.FileItem fileItem)

そのために、DiskFileItemコンストラクターを使用してFileItemオブジェクトを作成しようとしています。

DiskFileItem(java.lang.String fieldName, java.lang.String contentType, boolean isFormField, java.lang.String fileName, int sizeThreshold, java.io.File repository)

しかし、これらのパラメーターのいずれかを渡す方法がわかりません。

私はこれらすべてをSpring3MVCコントローラーで動作させていますが、junitテストを実行するには、メソッド2つのオブジェクトに合格する必要があります。1つは、次のようなUploadItemオブジェクトです。

import org.springframework.web.multipart.commons.CommonsMultipartFile;

public class UploadItem {
 private String fileName;
 private String filePath;
 private CommonsMultipartFile fileData;

 public String getFileName() {
  return fileName;
 }

 public void setFileName(String fileName) {
  this.fileName = fileName;
 }

 public String getFilePath() {
  return filePath;
 }

 public void setFilePath(String filePath) {
  this.filePath = filePath;
 }

 public CommonsMultipartFile getFileData() {
  return fileData;
 }

 public void setFileData(CommonsMultipartFile fileData) {
  this.fileData = fileData;
 }
}

setFileData()メソッドには、src / test/resourcesディレクトリにファイルを指定して作成しようとしているCommonsMultipartFileオブジェクトが必要です。

ファイルを取得してFileItemオブジェクトを作成し、それをCommonsMultipartFileオブジェクトコンストラクターに渡す方法を知っている人はいますか?

ありがとう。不明な点がある場合は、お知らせください。SpringMVCファイルのアップロードについてはあまり詳しくありません。

4

2 に答える 2

33

より一般的なインターフェースを使用しますorg.springframework.web.multipart.MultipartFileorg.springframework.web.multipart.commons.CommonsMultipartFileコマンド(UploadItem)の代わりに 。(CommonsMultipartFileは、インターフェイスの1:1実装です)。

CommonsMultipartFileこれで、モッククラスを使用してのインスタンスを作成できますorg.springframework.mock.web.MockMultipartFile。(これはの要素ですspring-test.jar)。

次に、テストでのMultipartFileの作成は、キャストなしの1つのステートメントのみです。

MockMultipartFile mockMultipartFile = new MockMultipartFile(
       "test.txt",                //filename
       "Hallo World".getBytes()); //content
于 2011-07-26T09:18:55.917 に答える
-2

これはどのように役立ちますか?リクエストに応じてファイルを設定しないでください。次のように使用する必要があります。

MultipartFile multipartFile = getMockCommonsMultipartFile(BULK_CSV);
MockMultipartHttpServletRequest request = new MockMultipartHttpServletRequest();
request.addFile(multipartFile);
CommonsMultipartFile commonsMultipartFile = (CommonsMultipartFile) request.getFile(BULK_CSV);

引数付きのメソッドを使用していますCommonsMultipartFile。そうでない場合は、MockMultipartFile直接使用できます。

 private MultipartFile getMockCommonsMultipartFile(String name, String path) throws IOException {
        InputStream is = getClass().getResourceAsStream(path);
        MultipartFile multipartFile = new MockMultipartFile(name, name, "", is);
        return multipartFile;
    }
于 2014-06-16T14:33:16.983 に答える