在使用JUnit进行测试时,我无法理解一些事情,我编写了一些测试,而有些测试似乎可以简单地使用
@RunWith(MockitoJUnitRunner.class)
而且
@Mock
有些似乎不能与它们一起工作,所以我必须使用
@RunWith(SpringRunner.class)
而且
@MockBean
我理解@mockbean是在处理spring容器时使用的,而@mock只是用来复制/模拟某个类及其方法。但是什么时候才是使用@mockbean的最佳时机呢?
@Test
public void addBulkFcmLog() throws Exception {
JacksonTester.initFields(this, new ObjectMapper());
AdminFcmResource adminFcmResource = AdminFcmResource.builder()
.adminId(123L)
.build();
given(this.fcmService.addBulkFcmLog(any(BulkFcmDataResource.class))).willReturn(adminFcmResource);
MockHttpServletResponse response = mockMvc.perform(
post(Routes.SEND_FCM + "/admin/logs/add")
.contentType(MediaType.APPLICATION_JSON)
.content(bulkFcmDataResourceJacksonTester.write(BulkFcmDataResource.builder().adminId(123L).build()).getJson()))
.andExpect(status().isCreated())
.andReturn()
.getResponse();
assertThat(response.getContentAsString()).isEqualTo(
adminFcmResourceJacksonTester.write(adminFcmResource).getJson()
);
assertThat(response.getStatus()).isEqualTo(HttpStatus.CREATED.value());
}
上面是我在spring boot应用程序中为一个控制器编写的测试,但当我使用@mock模拟fcmService类时,响应带有一个空正文,但随后我将其改为@mockbean并自动连线控制器类,然后test返回正确的结果。这是怎么发生的?
在集成测试上下文中,使用bean总是可取的(如果需要,可加以嘲弄)。有几点要记住:
@mockbean
负责注入对象,您不需要自己设置。@qualifier
),则测试将在启动时暴露该问题。@mockbean
比普通的@mock
设置器
并且手动注入将非常简单。我试图使用Junit5为特定的服务类创建单元/集成测试,以避免整个项目过载。 测试类: 错误: 2019-04-03 14:56:06.146警告732---[main]O.S.W.C.S.GenericWebApplicationContext:上下文初始化过程中遇到异常-取消刷新尝试:org.springframework.beans.factory.unsatisfiedDependency
本文向大家介绍基于Springboot+Junit+Mockito做单元测试的示例,包括了基于Springboot+Junit+Mockito做单元测试的示例的使用技巧和注意事项,需要的朋友参考一下 前言 这篇文章介绍如何使用Springboot+Junit+Mockito做单元测试,案例选取撮合交易的一个类来做单元测试。 单元测试前先理解需求 要写出好的单测,必须先理解了需求,只有知道做什么才能
伙计们,我是JUnit测试的新手,并试图很好地掌握它,现在我正在为一个构造函数(用于创建有向图的有向图类)编写JUnit测试,该构造函数在读取负int值时抛出IllegalArgumentExctive,如果一切正常(节点值的数量)大于零,则创建一个图。 有向图类: 下面是我试图写的测试: 我应该如何使用一个(或两个)测试用例来测试这两个用例?如果“in”没有检测到-ve值,我就得到java。否则
与许多Java应用程序一样,我们在应用程序中使用Freemarker来呈现电子邮件。我们发现我们的一些模板并没有像我们想象的那样呈现,因此我们意识到我们应该为模板呈现编写一些单元测试。我设置了测试,并立即收到一个FileNotFoundException:找不到模板“my/Template.ftl”。 我想这一定是一个既能解决问题又能轻松解决的问题。那是很多小时前的事了,我意识到我错了;据我所知,
我正在为Junit编写测试,以测试我编写的删除函数: 此方法适用于同时具有前后节点的双链接列表。 问题是:我们的大学将针对我们编写的测试运行错误代码,以确定我们是否编写了足够的测试来捕获错误代码和异常。 我知道他们将运行的两个测试,但不知道错误的含义。 > 失败:缺少逻辑 故障:缺少NextNodeRepairLogic 这是我没有考虑的两个测试,因为我无法理解这些错误的含义。有人知道这些错误可能
我不能在HttpSession上进行模拟。测试方法如下所示: 测试结果如下所示: 我总是得到未经授权的例外,但我需要避免它。如何为会话添加一些参数来模拟工作?