java - Junits 的 Guice 和 Mockto

标签 java unit-testing junit mockito guice

我正在尝试为解析器编写 Junit 测试。此解析器从所选文件创建顶点和边图。在解析器中,我多次调用“VertexImpl”的构造函数来创建我需要的顶点。

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

每次使用“Mockito”和“Guice”调用构造函数时,如何创建模拟对象?

最佳答案

你可以在你的测试类中做类似的事情:

@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 的实例,将作为此测试的模拟注入(inject),其他字段将像在生产中一样正常注入(inject)(由于使用您的应用程序模块)。

注意,你不能定义一个注入(inject)两次

关于java - Junits 的 Guice 和 Mockto,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36599196/

相关文章:

java - Vaadin 组合框分隔符

java - 渲染 <h :panelGroup> by ajax in jsf

javascript - 监视不可变的 native 方法

java - 如何使用 JUnit 测试没有 @SpringBootApplication 的 Java Spring Boot 应用程序?

java - 如何使图表显示数组元素

c - 嵌入式系统上中断密集型代码的单元测试

java - assertThat(actual).usingRecursiveComparison().ignoringAllOverriddenEquals().isEqualTo(expected) 的奇怪行为

java - 如何在junit测试中模拟按键?

java - JUnit 类型安全的 assertEquals

java - 从控制台运行 Java 应用程序时如何查看完整的异常堆栈跟踪?