gpt4 book ai didi

java - 如何控制unitTest中的全局变量

转载 作者:行者123 更新时间:2023-11-30 03:47:22 27 4
gpt4 key购买 nike

是否可以控制我测试的类中的全局变量的值?全局变量在私有(private)方法中使用,因此我使用公共(public)方法(在同一个类中)来传递它。

我怎么说mListValService != null

public class Myclass {

//my global variable
private ListValServiceRemote listValService = null;

public String getCodeValeurRef(Long idValeur) {
return getListValService().getRlvCode(idValeur);

// I want 100% coverage on this method so i have to change the value
// of mListValService.
private ListValServiceRemote getListValService() {
if (listValService == null) {
listValService = ServiceGetter.getListValService();
}
return listValService;
}

最佳答案

ReflectionTestUtils来自 spring-test 可能是访问字段值的解决方案。您还可以使用普通的旧反射,向字段添加 getter/setter 或使字段 protected ,并将测试放在与测试类相同的包中。

示例测试:

public class MyclassTest {
private MyClass myClass;

@Before
public void setup() {
this.myClass = new MyClass();
}

@Test
public void testGetListValServiceWhenFieldIsNull() {
assertNotNull(this.myClass.getListValService());
}

@Test
public void testGetListValServiceWhenFieldIsNotNull() {
final ListValServiceRemote lvsr = new ListValServiceRemote();
ReflectionTestUtils.setField(this.myClass, "listValService", lvsr);
assertSame(lvsr, this.myClass.getListValService());
}
}

关于java - 如何控制unitTest中的全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25304588/

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