gpt4 book ai didi

java - 如何在包含本地 Set 变量的方法中进行单元测试?使用 powerMock 或 Mockito

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

我有一个如下所示的类(class):

public class Connection{

public boolean isDBConnectionRelativeException(String key) {
Set<String> keySet = new HashSet<>();
keySet.add("key1");
keySet.add("key2");
keySet.add("key3");
if (keySet.contains(key)) {
return true;
}
return false;
}
}

我不知道如何用它进行单元测试

我在[How to mock the return value of a Map?中发现类似的情况

但我认为这不是同一个问题。我尝试使用 PowerMockito 执行此操作,如下所示,但它不起作用

@RunWith(PowerMockRunner.class)
@PrepareForTest({HashSet.class})
public class ConnectionExceptionAspectTest {
private Connection connectionExceptionAspect;
@Before
public void init(){
Mockito.validateMockitoUsage();
connectionExceptionAspect = new Connection();
}
@Test
public void isDBConnectionRelativeExceptionMock() {

Set<String> stringSet = new HashSet<>();
Set<String> clazzSet = spy(stringSet);
try {
PowerMockito.whenNew(HashSet.class).withNoArguments().thenReturn((HashSet) clazzSet);
PowerMockito.when(clazzSet.contains("key")).thenReturn(true);

}catch (Exception e){
e.printStackTrace();
}
assertTrue(connectionExceptionAspect.isDBConnectionRelativeException("key"));

}
}

请帮我用它做一个单元测试!谢谢!

**//编辑一次后**
在实际情况中,Set keySet 是用

构造的
Set<String> keySet = new HashSet<>();

,keySet.add(element) 无法在测试用例中运行,它比较复杂。所以我只是想模拟它以获得像

这样的结果
PowerMockito.when(keySet.contains("key")).thenReturn(true);

我知道 PowerMockito 可以模拟本地新变量实例,但我不知道如何处理本地新 map 实例。我找不到任何关于这个的信息。我非常感谢所有关心这个问题的人。我的英语很糟糕,无法解释我的问题。

//第二次编辑后
我知道如何模拟 POJO 本地新变量实例,但我不知道如何模拟 Set< String >、Map< String,String > 等本地新变量实例。我认为他们是非常不同的。这就是问题:如何模拟本地 Set< String >、Map< String,String > 等实例。

最佳答案

上述方法不需要模拟局部变量。

@Test
public void isDBConnectionRelativeExceptionMock() {
assertTrue(connection.isDBConnectionRelativeException("key1"));
assertTrue(connection.isDBConnectionRelativeException("key4"));
}

关于java - 如何在包含本地 Set<String> 变量的方法中进行单元测试?使用 powerMock 或 Mockito,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57767897/

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