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

Guice and Mockto for J单位

端木渝
2023-03-14

我试图为解析器编写JUnit测试。这个解析器从选定的文件中创建顶点和边的图。在解析器中,我多次调用“Vertex Impl”的构造函数来创建我需要的顶点。

当我测试解析器时,我不想创建实际的“VertexImpl”对象,因为我希望它是一个真正的单元测试。

如何在每次使用"Mockito"和"Guice"调用构造函数时制作模拟对象?

共有2个答案

滕渝
2023-03-14

如果不想让解析器创建某些对象;好然后重写它,不创建这样的对象。

我的意思是:你的解析器应该有一些“工厂”对象,解析器可以用它来创建这样的顶点输入。对于你的单元测试,你“模拟”了那个工厂;从而完全控制解析器应该做什么。

请注意:测试中的代码对于单元测试和生产使用是相同的。唯一的区别是:在单元测试设置中,工厂对象是不同的(您想阅读关于如何做到这一点的依赖注入)。

戚正业
2023-03-14

你可以在考试课上做类似的事情:

@Inject
private YourClassToMock _myMock;

@Before
public void setUp( ) throws Exception {
    Guice.createInjector( /* Your application modules */, mockModule( ) )
         .injectMembers( this );
}

private Module mockModule( ) {
    return new AbstractModule( ) {
        @Override
        protected void configure( ) {
            bind( YourClassToMock.class ).toInstance( mock( YourClassToMock.class ) );
        }
    };
}

字段_myMock是YourClassToMock实例,将作为本测试的模拟注入,其他字段将像生产中一样正常注入(由于使用了应用程序模块)。

小心,你不能定义一次注射两次

 类似资料:
  • 问题内容: 我是Java的新手,我需要列出列表列表。我可以在python中做到这一点,因为列表的元素可以是列表,因此在嵌入式列表中将引用列表,并且将引用嵌入式列表的zeroeth元素。有什么简单的方法可以在Java中实现此行为? 问题答案: 所有其他答案在技术上都是正确的,但是恕我直言,如果您实施了粗略的列表列表,您将无法在正确的抽象级别上处理数据。例如,我很确定列表列表在您的业务领域中已经意味着

  • CSS 长度单位 在 Weex 中,我们支持 px和wx 长度单位。对于不希望受屏幕宽度和 viewPortWidth 影响的尺寸,请使用 wx 单位。 注意 Weex 不支持类似 em、rem、pt,% 这样的 CSS 标准中的其他长度单位; 单位 px或wx 不可省略,否则在 H5 环境无法正确渲染; CSS 数值单位 在 Weex 中,除了长度单位外,还有数值单位,仅仅一个数值,后面没有 p

  • 问题内容: 运行代码 退货 因此,每次在列表列表中每次更新元组(列表)的第一个参数,但第二个参数list [0]却没有更新。有人可以解释这里发生的事情并提出解决方法吗?我想输出 问题答案: 列表是可变类型-为了创建副本(而不只是传递相同的列表),您需要明确地这样做: 但是,已经是Python内置的名称-最好不要将该名称用作变量。这是一个不用作变量名并复制的版本: 请注意,我演示了两种不同的方法来复

  • 单条分单即输入地址,可以查询出来该地址所属的区划 地址方式:按照示例地址输入规范的地址,可匹配相应的区划。 经纬度方式:按照示例,输入精确经纬度,可匹配相应的区划 可以打开历史记录,分单结果可通过数据表格下载导出 支持分单页面进行分享

  • 我正在Bootstrap中创建一个简单的单页布局,但是我正在为大屏幕和移动设备上的div的背景颜色而苦苦挣扎。当在大屏幕上时,div的尺寸是100VW宽和100VH高--这一切都很好。问题是,当我向下缩放视口时,div的所有内容下面没有所需的颜色,内容溢出到第一个div下面的第二个div中。 我怎样才能使div的所有内容下面都有一种颜色,不管视区大小是多少?(宽度或高度的100%没有帮助,有边框在

  • 问题内容: 我可以将简短的清单传递给一种简洁的方法吗?这是我正在尝试做的事情: 问题答案: 是。您可以这样操作: 在Python中运行此命令可以确认产生相同的结果:

  • 问题内容: 如何合并列表列表? 进入 如果我可以在合并列表之前在每个项目的开头和结尾添加一个值(例如html标签),那就更好了。 即,最终结果将是: 问题答案: 要串联列表,可以使用 要添加HTML标签,您可以使用列表推导。