gpt4 book ai didi

java - Mockito无法实例化被测类

转载 作者:行者123 更新时间:2023-12-01 18:39:26 26 4
gpt4 key购买 nike

我有三个类ABC:

public class A {
@Autowired
private B someB;
private C someC = someB.getSomeC();
}

@Service
public class B {
C getSomeC() {
return new C();
}
}

public class C { }

现在,如果我为 A 编写一个单元测试,如下所示:

@RunWith(MockitoJUnitRunner.class)
public class ATest {

@InjectMocks
private A classUnderTest;

@Mock
private B someB;

@Mock
private C someC;

@Test
public void testSomething() {

}
}

Mockito 对此并不满意:

 org.mockito.exceptions.base.MockitoException: 
Cannot instantiate @InjectMocks field named 'classUnderTest' of type 'class my.package.A'.
You haven't provided the instance at field declaration so I tried to construct the instance.
However the constructor or the initialization block threw an exception : null

如果我删除类 A 中的调用,则类 A 如下所示:

public class A {
private B someB;
private C someC;
}

,Mockito能够实例化UnderTest类并且测试运行通过。

为什么会出现这样的情况呢?

编辑:使用 Mockito 1.9.5

最佳答案

嗯,这总是会失败:

public class A {
private B someB;
private C someC = someB.getSomeC();
}

您尝试对一个始终为空的值调用getSomeC()...这将始终抛出NullPointerException。您需要修复 A 以更好地处理依赖关系。 (我个人会将它们作为构造函数参数,但当然还有其他选项......)

关于java - Mockito无法实例化被测类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20540809/

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