Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何编写mockito测试用例来上传文件,如下面给定的控制器所示?_Java_Unit Testing_Spring Boot_Mockito - Fatal编程技术网

Java 如何编写mockito测试用例来上传文件,如下面给定的控制器所示?

Java 如何编写mockito测试用例来上传文件,如下面给定的控制器所示?,java,unit-testing,spring-boot,mockito,Java,Unit Testing,Spring Boot,Mockito,这是我的应用程序.properties文件 @RestController @ComponentScan public class FileUploadController { @Autowired Environment env; private static final Logger logger = LoggerFactory .getLogger(FileUploadController.class); /** *

这是我的应用程序.properties文件

@RestController
@ComponentScan
public class FileUploadController {

    @Autowired
    Environment env;

    private static final Logger logger = LoggerFactory
            .getLogger(FileUploadController.class);

    /**
     * Upload single file using Spring Controller
     */
    @RequestMapping(value = "/{name}", method = RequestMethod.POST)
    public String fileUpload(@RequestParam("file") MultipartFile file,
            @PathVariable("name") String name) throws Exception {
        System.out.println(file);
        System.out.println(name);
        if (!file.isEmpty()) {
            try {
                byte[] bytes = file.getBytes();

                // Creating the directory to store file
                Path path = Paths.get(env.getProperty("upload.dir.location"));

                // Create the file on server
                File serverFile = new File(path + "/" +name);
                BufferedOutputStream stream = new BufferedOutputStream(
                        new FileOutputStream(serverFile));
                stream.write(bytes);
                stream.close();

                logger.info("Server File Location="
                        + serverFile.getAbsolutePath());

                return "You successfully uploaded file=" + name;
            } catch (Exception e) {
                return "You failed to upload " + name + " => " + e.getMessage();
            }
        } else {
            return "You failed to upload " + name
                    + " because the file was empty.";
        }
    }

}
我需要一个JUnit或Mockito(最好)测试用例来测试这段代码。我尝试过几种格式,但到目前为止还没有找到完美的。有人能建议我写单元测试用例来上传文件吗? 提前谢谢

编辑-1

这是我的测试课:

server.port=8082

spring.http.multipart.max-file-size=10MB
spring.http.multipart.max-request-size=10MB

upload.dir.location=/home/user/Desktop/UploadedFiles/
还是说,, java.lang.AssertionError:状态应为:但为:
对于这两个测试用例。

使用JUnit,您可以在方法运行后验证文件是否存在

@WebAppConfiguration
public class RestapiFileUploadControllerTest extends RestapiFileuploadApplicationTests{

    private MockMvc mvc;

    @Autowired
    private WebApplicationContext webApplicationContext;

    @Autowired
Environment env;

@Test
public void testUploadedFile() throws Exception{
    File f = new File("/home/user/Documents/response.pdf");
    System.out.println(f.isFile()+"  "+f.getName()+"  "+f.exists());
    FileInputStream fi1 = new FileInputStream(f);
    FileInputStream fi2 = new FileInputStream(new File("/home/user/Desktop/UploadedFiles/response"));
    MockMultipartFile fstmp = new MockMultipartFile("upload", f.getName(), "multipart/form-data",fi1);
    MockMultipartFile secmp = new MockMultipartFile("upload", "response.pdf","application/pdf",fi2); 
    MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();
    mockMvc.perform(MockMvcRequestBuilders.fileUpload("/response")                
            .file(fstmp)
            .file(secmp))               
            .andExpect(status().isOk());
}

@Test
public void test1() throws Exception {
    MockMultipartFile firstFile = new MockMultipartFile("pdf", "response.pdf", "multipart/form-data", "data".getBytes());

    Path path = Paths.get(env.getProperty("upload.dir.location"));

    MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();
    mockMvc.perform(MockMvcRequestBuilders.fileUpload("/response", path)
                    .file(firstFile)
                    .param("some-random", "4"))
                .andExpect(status().isOk());
}

}

使用JUnit,您可以在方法运行后验证文件是否存在

@WebAppConfiguration
public class RestapiFileUploadControllerTest extends RestapiFileuploadApplicationTests{

    private MockMvc mvc;

    @Autowired
    private WebApplicationContext webApplicationContext;

    @Autowired
Environment env;

@Test
public void testUploadedFile() throws Exception{
    File f = new File("/home/user/Documents/response.pdf");
    System.out.println(f.isFile()+"  "+f.getName()+"  "+f.exists());
    FileInputStream fi1 = new FileInputStream(f);
    FileInputStream fi2 = new FileInputStream(new File("/home/user/Desktop/UploadedFiles/response"));
    MockMultipartFile fstmp = new MockMultipartFile("upload", f.getName(), "multipart/form-data",fi1);
    MockMultipartFile secmp = new MockMultipartFile("upload", "response.pdf","application/pdf",fi2); 
    MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();
    mockMvc.perform(MockMvcRequestBuilders.fileUpload("/response")                
            .file(fstmp)
            .file(secmp))               
            .andExpect(status().isOk());
}

@Test
public void test1() throws Exception {
    MockMultipartFile firstFile = new MockMultipartFile("pdf", "response.pdf", "multipart/form-data", "data".getBytes());

    Path path = Paths.get(env.getProperty("upload.dir.location"));

    MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();
    mockMvc.perform(MockMvcRequestBuilders.fileUpload("/response", path)
                    .file(firstFile)
                    .param("some-random", "4"))
                .andExpect(status().isOk());
}

}

“我需要一个”。。关键是你开始写一个,当你被困在某个地方时,我们会帮助你。我们不会为您编写定制的单元测试。此链接可以帮助您。是的,我已经写了一件事。但是,他犹豫是否将该文件包括在内。给我一点时间,我会加上一些澄清,“我需要一个”。。关键是你开始写一个,当你被困在某个地方时,我们会帮助你。我们不会为您编写定制的单元测试。此链接可以帮助您。是的,我已经写了一件事。但是,他犹豫是否将该文件包括在内。给我一点时间,我会补充一些澄清。不,这不起作用。我需要添加BuildTestFile()方法和ExportFileToDisk类,对吗?我需要包括什么?我给你一个大纲,让你有一个有效的单元测试来检查一个文件是否被输出。在我上面的评论下面的3行中,你需要调用输出文件的方法。不,这不起作用。我需要添加BuildTestFile()方法和ExportFileToDisk类,对吗?我需要包括什么?我给你一个大纲,让你有一个有效的单元测试来检查一个文件是否被输出。在上面我的评论下面的3行中,您需要调用输出文件的方法。