我正在使用垃圾,模拟和模拟MVC来测试网络应用程序的工作。我正在与一个我无法弄清楚的注入的依赖关系作斗争。我的网络应用程序结构如下。
Class Controller{
@Autowired Service searchService;
@RequestMapping("Search")
public returnType search(@RequestParam("parameter")String parameter){
searchService.doSearch(parameter);
}
}
和服务级别
Class Service{
@Autowired Service2 service2;
public returnType doSearch(String parameter){
//some code
service2.call(parameter);
}
}
我需要测试此控制器的搜索方法,但是service2当前不活动,因此必须模拟对它的调用。我可以模拟service2,但不知道如何在控制器的mockMVC实例中注入service2的模拟。据我所知,mockito中的@InjectMocks只注入一层深度的mock,而不是两层。
编辑:
我使用下面的代码来获取控制器的MockMVC实例
MockMvc controller;
controller = MockMvcBuilders.standaloneSetup(Controller);
你不需要那个。
模仿搜索服务
就足够了,因为你知道需要做什么。
例子:
< code>doReturn(...).当(searchService)。do search(any());
在执行单元测试时,开发人员需要识别被测系统并模拟/存根所有协作者。
因此,在这种情况下,您应该为控制器和搜索服务编写单独的单元测试。
另外,请阅读马丁·福勒的这篇精彩文章——嘲笑不是存根。
你本质上想要做的是模仿一颗豆子。
在你的情况下,你必须使用@MockBean注释来模拟服务2的bean。
有关详细信息,请参阅本文。
如果我有一个OSGI Bundle jar中嵌套了依赖项jar,我是否需要在导入包清单中列出这些类以便使用它们?我不这么认为。 另外,我如何将这些依赖项jar添加到我的包中。我只是把它们放在根文件夹里吗?我是否需要向清单文件添加任何内容才能使用这些依赖关系?
下面是演示该问题的代码。Class3具有Class2的自动生成字段,Class2具有Class1的自动生成依赖项,简单测试使用Class3获取Class1的String值。因此,在测试执行中,Class2不是空的,并被注入到Class3中,但是Class2中的Class1是空的。
在坐标系统小节中,我们渲染了一个3D箱子,并且运用了深度缓冲(Depth Buffer)来防止被阻挡的面渲染到其它面的前面。在这一节中,我们将会更加深入地讨论这些储存在深度缓冲(或z缓冲(z-buffer))中的深度值(Depth Value),以及它们是如何确定一个片段是处于其它片段后方的。 深度缓冲就像颜色缓冲(Color Buffer)(储存所有的片段颜色:视觉输出)一样,在每个片段中储存了
在Android中,在预定的工作服务中注入依赖项的最佳方式是什么。我的工作服务计划在晚上运行做一些事情。 在JobService构造函数中,我试图在应用程序类上注入依赖项。 下面是我的应用程序类
我有一个非常简单的rest控制器: 记录器依赖项通过以下配置注入:
主要内容:1. dependOnMethods示例,2. dependsOnGroups示例有时,我们可能需要以特定顺序调用测试用例中的方法,或者可能希望在方法之间共享一些数据和状态。 TestNG支持这种依赖关系,因为它支持在测试方法之间显式依赖的声明。 TestNG允许指定依赖关系: 在注释中使用属性,或者 在注释中使用属性。 在TestNG中,我们使用和来实现依赖测试。 如果依赖方法失败,则将跳过所有后续测试方法。 为了方便演示使用,首先创建一个 Maven 项目: DependO