使用 Mockito 对基于 Guice 的类进行单元测试

詹姆士遗物

我的应用程序使用 Google Guice 依赖注入框架。我现在在想办法为我的班级编写单元测试时遇到了麻烦。

private final Person aRecord;

@Inject
public MyClass(Venue venue, @Assisted("record") Record myRecord) {
    super(venue,myRecord);
    aRecord = (Person) myRecord;
}

public void build() throws Exception {
    super.build();
    super.getParentRecord().setJobType(aRecord.getJobType());
    super.getParentRecord().setHairColor(aRecord.getHairColor());
    super.getParentRecord().setEyeColor(aRecord.getEyeColor());
}

我想为子类中的 build() 方法编写单元测试,它应该

  • 确保当 super.build() 被调用时, super.getParentRecord() 上的所有基本信息都已填充,例如年龄、性别等。
  • 如果 aRecord.getJobType() 为 null,确保在 build() 方法中抛出异常
  • 如果 aRecord.getHairColor() 为 null,确保在 build() 方法中抛出异常
  • 如果 aRecord.getEyeColor() 为 null,确保在 build() 方法中抛出异常
叶夫根尼·季米特洛夫

您有两个 MyClass 依赖项(Venue 和 Record),因此您必须模拟它们。

import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
...
Venue venueMock = mock(Venue.class);
Record recordMock = mock(Record.class);

然后在您的单元测试中,您必须创建一个实例MyClass并断言预期结果:

例如:“如果 aRecord.getJobType() 为 null,请确保在 build() 方法中抛出异常”

@Test(expected=RuntimeException.class)// or whatever exception you expect
public void testIfExceptionIsThrownWhengetJobTypeReturnsNull() throws Throwable {
    Venue venueMock = mock(Venue.class);   //create the mocks
    Record recordMock = mock(Record.class);//create the mocks
    when(recordMock.getJobType()).thenReturn(null); //specify the behavior of the components that are not relevant to the tests

    MyClass myClass = new MyClass(venueMock, recordMock); 
    myClass.build();
    //you can make some assertions here if you expect some result instead of exception
}

请注意,如果您没有指定任何模拟依赖项的返回值(with when()),它将返回返回类型的默认值 - 对象为 null,原始数字为 0,布尔值为 false 等。所以它将是最好存根中使用的所有方法MyClass

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用Mockito进行Runnable的单元测试

使用Mockito进行单元测试LazyLogging

使用Mockito对POJO进行单元测试

如何在单元测试中使用Mockito或任何Mocking框架模拟Guice Injection?

如何对使用Google Guice的课程进行单元测试?

如何模拟要使用JUnit + Mockito进行单元测试的服务中使用的类

在使用Mockito进行单元测试时,如何处理ThirdParty类的静态方法调用?

Android-如何使用Mockito对测井类进行单元测试

使用 Mockito 对 Realm 包装的 LiveData 进行单元测试

如何使用Mockito模拟静态方法以进行单元测试

使用Mockito库进行Scala单元测试

如何/应该使用Mockito对EventBus事件进行单元测试?

使用Mockito对构造函数进行单元测试

使用Mockito和Firebase进行单元测试

使用Mockito进行单元测试改造API调用-ArgumentCaptor

如何使用Mockito对图节点进行单元测试?

使用基于Active Record的框架进行单元测试

如何在Mockito单元测试中为基于SpringBoot的服务类指定匹配器

如何使用 Mockito 通过单元测试?

使用 mockito 创建单元测试

使用Mockito的Spring服务单元测试

使用Mockito进行的JVM单元测试,用于测试Retrofit2和RxJava的网络请求

使用StaticLoggerBinder对类进行单元测试

如何使用Mockito为控制器类编写单元测试用例

在 Mockito 的单元测试中使用带有 @Required 字段的类

如何使用 spring boot 和 mockito 对控制器方法进行单元测试

Kafka:是否有示例说明如何使用Mockito进行单元测试Kafka?

如何使用Mockito对Flink计时器进行单元测试

使用jUnit和Mockito进行外部REST API调用的单元测试