gpt4 book ai didi

unit-testing - 可以使用 mockito 模拟抽象类吗?

转载 作者:行者123 更新时间:2023-12-05 04:15:55 24 4
gpt4 key购买 nike

在一个被测类中,如果它的构造函数接受一个抽象类参数,我们可以使用 mockito 模拟它吗?

例如

public abstract AbstractClass{
}

//Class under test
public class SourceClass{
SourceClass(AbstractClass abstractClass){}
}

@RunWith(MockitoJUnitRunner.class
public SourceClassTest{
@Mock
AbstractClass abstractClass;
}

每当我这样做时我都会得到这个错误

java.lang.ExceptionInInitializerError

我使用的 mockito 版本是 1.8.5

最佳答案

好吧,下面这段代码工作正常,请告诉我是否需要添加一些注释来解释我写的内容,好吗? (嘿,我正在使用 Mockito 1.10.8):

import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.runners.MockitoJUnitRunner;

abstract class AbstractClassToTest {
public abstract String doSomething();
}

class ConcreteClass {

private String something;

public ConcreteClass(AbstractClassToTest aClass){
this.something = aClass.doSomething();
}

public String getSomething(){
return this.something;
}
}

@RunWith(MockitoJUnitRunner.class)
public class TempTest {

@Mock
private AbstractClassToTest myClass;

@Test
public void canAbstractClassToTestBeMocked() {
String expectedResult = "hello world!";
Mockito
.when(myClass.doSomething())
.thenReturn(expectedResult);

String actualResult = myClass.doSomething();

Assert.assertEquals(expectedResult, actualResult);
}

@Test
public void canConcreteClassBeInstantiatedWithMock() {
String expectedResult = "hello world!";
Mockito
.when(myClass.doSomething())
.thenReturn(expectedResult);

ConcreteClass concrete = new ConcreteClass(myClass);

String actualResult = concrete.getSomething();

Assert.assertEquals(expectedResult, actualResult);
}
}

关于unit-testing - 可以使用 mockito 模拟抽象类吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29956496/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com