gpt4 book ai didi

java - 如何在java中使用junit mockito处理依赖于抽象方法的测试类

转载 作者:太空宇宙 更新时间:2023-11-04 11:21:39 26 4
gpt4 key购买 nike

我是在java中使用mockito进行junit测试的新手。我一直被困在某一点上。我有一个抽象类 AbstractA 需要测试。AbstractA 的实现如下。

public abstract class AbstractA implements ADao {
@Autowired
NamedParameterJdbcTemplate jdbcTemplate;
@Override
public List<String> getColumns(Set<String> ids) {
String sql = query();
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("ids", ids);
return jdbcTemplate.query(sql, paramMap, rowMapper());
}
abstract protected String query();
abstract protected AbstractIpRowMapper rowMapper();
}

上面的测试类是 AbsractATest

public class AbsractATest {
@InjectMocks
AbsractA abstractA;
@Mock
NamedParameterJdbcTemplate jdbcTemplate;

@Mock AbstractIpRowMapper abstractIpRowMapper;
@Before
public void setUp() throws IOException, SQLException {
abstractA=Mockito.mock(AbsractA.class, Mockito.CALLS_REAL_METHODS);
jdbcTemplate=mock(NamedParameterJdbcTemplate.class);

List<String> idsinput=new ArrayList<String>();
idsinput.add("123");
idsinput.add("124");
idsinput.add("125");

Set<String> ids=new LinkedHashSet<String>();
ids.add("123");
ids.add("124");
ids.add("125");

Map<String, Object> paramMap = new HashMap<>();
paramMap.put("ids", ids);

String query="select ids from tableA where ids=:ids";
when(abstractA.query()).thenReturn(query);
when(jdbcTemplate.query(query, paramMap,rowMapper())).thenReturn(idsinput);
org.springframework.test.util.ReflectionTestUtils.setField(abstractA, "jdbcTemplate", jdbcTemplate);
}

protected AbstractIpRowMapper rowMapper() {
return absractIpRowmapper;
}
But after running this test case I am getting empty value for
abstractA.getColumns();

请帮助我了解在上述情况下我应该做什么。

最佳答案

运行 doCallRealMethod().when(abstractA).getColumns();在单元测试中

关于java - 如何在java中使用junit mockito处理依赖于抽象方法的测试类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44831406/

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