关于java:文件上传的单元测试怎么写

14次阅读

共计 1729 个字符,预计需要花费 5 分钟才能阅读完成。

早上有个群友问了一个不错的问题:文件上传的单元测试怎么写?前面也针对后端开发要不要学一下单元测试的话题聊了聊,集体是十分倡议后端开发可能学一下单元测试的。所以,明天顺便拿进去写一篇说说,并不是因为这有多难写,而是作为杰出的后端开发人员,单元测试如果你能考虑周到,那么从代码构造,程序品质上都会有很大的晋升。而理论开发过程中,很少有开发人员会特地关注这个方面。

言归正传,上面咱们具体说说当碰到须要上传文件的接口,咱们要如何写单元测试!

先来回顾一下,一般接口的单元测试咱们是如何写的?看看咱们入门例子中的单元测试:

@SpringBootTest
public class Chapter11ApplicationTests {

    private MockMvc mvc;

    @Before
    public void setUp() {mvc = MockMvcBuilders.standaloneSetup(new HelloController()).build();}

    @Test
    public void getHello() throws Exception {mvc.perform(MockMvcRequestBuilders.get("/hello").accept(MediaType.APPLICATION_JSON))
                .andExpect(status().isOk())
                .andExpect(content().string(equalTo("Hello World")));
    }

}

这里咱们所用到的外围是 MockMvc 工具,通过模仿 http 申请的提交并指定相干的冀望返回来实现。

对于文件上传接口,实质上还是 http 申请的解决,所以 MockMvc 仍然逃不掉,就是上传内容产生了扭转,咱们只须要去找一下文件上传的模仿对象是哪个,就能够轻松实现这个工作。

具体写法如下:

@SpringBootTest(classes = Chapter43Application.class)
public class FileTest {

    @Autowired
    protected WebApplicationContext context;
    protected MockMvc mvc;

    @BeforeEach
    public void setUp() {mvc = MockMvcBuilders.webAppContextSetup(context).build();}

    @Test
    public void uploadFile() throws Exception {
        MockMultipartFile file = new MockMultipartFile(
                "file",
                "hello.txt",
                MediaType.TEXT_PLAIN_VALUE,
                "Hello, World!".getBytes());

        final MvcResult result = mvc.perform(
                MockMvcRequestBuilders
                        .multipart("/upload")
                        .file(file))
                .andDo(print())
                .andExpect(status().isOk())
                .andReturn();}

}

能够看到 MockMvc 的测试主体是不变的,无非就是申请类型和申请内容产生了扭转。

明天的这篇很水,但是否会编写单元测试以及是否写好单元测试,是很难看出一个后端开发程度的。所以,我是十分举荐大家可能在编写业务实现的时候,先考虑一下本人的单元测试是否不便写,甚至先定义好接口,并写好单元测试,再去写实现(传说中的测试驱动开发)。

最近的分享到这里完结,有更多想法可来公众号、星球或社群交换!

更多本系列收费教程连载「点击进入汇总目录」

代码示例

本文的相干例子能够查看上面仓库中的 chapter4-3 目录:

  • Github:https://github.com/dyc87112/SpringBoot-Learning/
  • Gitee:https://gitee.com/didispace/SpringBoot-Learning/

如果您感觉本文不错,欢送 Star 反对,您的关注是我保持的能源!

欢送关注我的公众号:程序猿 DD,取得独家整顿的收费学习资源助力你的 Java 学习之路!另每周赠书不停哦~

正文完
 0