当前位置: 首页 > 知识库问答 >
问题:

这是单元测试还是集成测试?

谢飞舟
2023-03-14
public void testInsertionMethod() throws Exception {

    String URI = "/insertionURL";
    ShoppingList list = new ShoppingList (3, new Fruit(1), new Vegetable(1));
    String inputJson= this.jsonConversionMethod(list);

    Assert.assertEquals(1, list.getNumOfItems());
    Assert.assertEquals(1, list.getFruit().getFruitId);
    Assert.assertEquals(1, list.getVegetable.getVegetableId());

    Mockito.when(shoppingListSvc.save(Mockito.any(ShoppingList.class))).thenReturn(list);

    MvcResult mvcResult = this.mockMvc.perform(MockMvcRequestBuilders.post(URI).param("fruitId", "1").param("vegId", "1"). accept(MediaType.APPLICATION_JSON).content(inputJson).contentType(MediaType.APPLICATION_JSON)).andReturn();

    MockHttpServletResponse mockHttpServletResponse = mvcResult.getResponse();
    String jsonOutput = mockHttpServletResponse.getContentAsString();
    assertThat(outputJson).isEqualTo(inputJson);
    Assert.assertEquals(HttpStatus.OK.value(), mockHttpServletResponse.getStatus());

}

共有1个答案

袁骏祥
2023-03-14

是组件测试。另外,您的测试类可能被注释为

@AutoConfigureMockMvc
@SpringBootTest

因为您正在使用mockMvc模拟对endpoint的调用。

在我看来,做这部分是没有意义的

 Assert.assertEquals(1, list.getNumOfItems());
 Assert.assertEquals(1, list.getFruit().getFruitId);
 Assert.assertEquals(1, list.getVegetable.getVegetableId());
        .andExpect(status().isOk())
        .andExpect(jsonPath("$.id", equalTo(...)))
        .andExpect(jsonPath("$.firstName", notNullValue()))
        .andExpect(jsonPath("$.lastName").isNotEmpty())
        .andExpect(jsonPath("$.email", equalTo(...)))
        .andExpect(jsonPath("$.partnerId", equalTo(...)));
        .andExpect(jsonPath("$.id").isNotEmpty())
 类似资料:
  • Spring对MockMvc有2个设置: 独立设置 WebApplication Context安装 一般来说,MockMvc用于哪种测试?单元还是集成?或者两者兼而有之? 使用独立设置(运行在Spring应用程序上下文之外)允许您编写单元测试,而使用WebApplication Context设置您可以编写集成测试,这是对的吗?

  • 单元测试 单元测试仅依赖于源代码,是测试代码逻辑是否符合预期的最简单方法。 运行所有的单元测试 make test 仅测试指定的package # 单个package make test WHAT=./pkg/api # 多个packages make test WHAT=./pkg/{api,kubelet} 或者,也可以直接用go test go test -v k8s.io/kubernet

  • 问题内容: 您能用几句话来解释一下吗: 为什么我们需要它/为什么它们使我们的生活更轻松? 如何对[Java中的简单示例]进行单元测试? 什么时候我们不需要它们/项目类型,我们可以不进行单元测试? 有用的链接 问题答案: 为什么我们需要它/为什么它们使我们的生活更轻松? 它允许您检查要测试的代码段的预期行为,并作为它必须满足的合同。 它还允许您安全地重构代码,而不会破坏其功能(合同)。 它使您可以通

  • 我的问题是:我是否应该修复我的单元测试,因为他们没有找到错误?单元测试不应该考虑其他类吗?我只是修改了我的生产性代码,因为集成测试覆盖这些内容就足够了。 编辑: 由于这些答复,似乎有必要进一步说明我的问题。我仍然不确定哪个测试负责什么。 好吧,我的测试有100%的代码复盖率,我创造的突变体被我的测试检测到,所以一切看起来都很好。 我的第二个类是一个处理程序,它负责在每次调用handler.next

  • 问题内容: 假设我有实现它的接口和实现类,并且我想为此编写单元测试。我应该测试什么接口或Impl? 这是一个例子: 因此,我有实现它的HelloInterface和HelloInterfaceImpl。什么是被测单元接口或Impl? 我认为应该是HelloInterface。请考虑以下JUnit测试草图: 主线实际上是我注释掉的那条线。 方法不是我的公共接口的一部分,所以我不想 意外地 调用它。如

  • 另请参见私有/受保护的方法是否应该在单元测试下? EDIT-2在多个实现\多个接口的情况下,我将测试所有的实现,但是当我在方法中声明变量时,我肯定会使用interface。