gpt4 book ai didi

java - PowerMock - 单例实例测试

转载 作者:太空宇宙 更新时间:2023-11-04 10:59:56 24 4
gpt4 key购买 nike

public Data extraMethod(Data data) // interface Data
{
Data d = Singleton.getInstance().sort(data.get() , "desc");
//do something, logical
return d;
}

如何模拟对象 Data(单例额外返回结果),类 Singleton 有一个静态方法 getInstance 并且没有公共(public)构造函数。我想测试逻辑部分,测试extraMethod而不进行数据排序操作。

最佳答案

如果您要监视正在测试的类并创建一个返回 Singleton 的包级方法,那么您可以不用 PowerMock 就可以逃脱。您仍然需要设置调用 sort 方法时会发生什么:

1) 被测类

public Data extraMethod(Data data) // interface Data
{
Data d = getSingleton().sort(data.get() , "desc");
//do something, logical
return d;
}

Singleton getSingleton(){
return Singleton.getInstance();
}

2)测试

@Spy
private MyClass myClassSpy = new MyClass();

@Mock
Singleton singletonStub;

@Mock
Data dataStub;

@Before
public void init(){
MockitoAnnotations.initMocks(this);
}

@Test
public void test() throws Exception{
// Arrange
doReturn(singletonStub).when(myClassSpy).getSingleton();
when(dataStub.get()).thenReturn(...);
when(singletonStub.sort(any(Data.class), "desc")).thenReturn(/* some data*/);

// Act and Assert
}

关于java - PowerMock - 单例实例测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47010775/

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