gpt4 book ai didi

java - 如何在Junit中的spring boot中访问使用@Mock初始化的静态变量

转载 作者:行者123 更新时间:2023-12-01 21:57:46 27 4
gpt4 key购买 nike

我有以下组件类。

 @Component
class ComponentClass{
private static AnotherClass anotherClass;

@Autowired
private void setAnotherClass(AnotherClass a){
anotherClass = a;
}

public AnotherClass getAnotherClass(){
return anotherClass;
}
}

@RunWith(MockitoJUnitRunner.class)
public class ComponentClassTest {

@InjectMocks
private ComponentClass componentClass;

@Mock
private AnotherClass anotherClass;

@Test
public void testGetAnotherClass() {
Assert.assertNotNull(ComponentClass.getAnotherClass());
}
}

当我尝试运行测试用例时,getAnotherClass 方法返回 null。任何人都可以在这里帮忙解释为什么 getAnotherClass 方法调用没有返回模拟实例。

最佳答案

扩展@m-deinum:该示例有一个静态字段和一个非静态 setter 。出于多种原因,这是不好的做法(包括 Mockito 不会碰它)。默认情况下,Spring 将确保 AnotherClass 是单例,因此我建议通过构造函数参数进行设置。 Spring 和 Mockito 都会对此感到满意。

private final AnotherClass anotherClass;
public ComponentClass(AnotherClass anotherClass) {
this.anotherClass = anotherClass;
}

关于java - 如何在Junit中的spring boot中访问使用@Mock初始化的静态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58729325/

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