【发布时间】:2018-01-12 13:09:29
【问题描述】:
简单的问题,我有一个类,其中有一个包含 Items 的 List 字段,我有一个在该 List 上运行的方法,检查是否有一个 Item 具有在参数中给出的名称并返回 true 或 false。我想测试那个方法,在测试类中创建一个 ArrayList,模拟 JdbcItemDao 类,然后调用一个方法。测试中的方法无法到达数组,如何解决?代码:
public class JdbcItemDao {
private List<Item> tempStockList;
public JdbcItemDao() {
this.tempStockList = getAllStockItems();
//getting items from my sql, returning them as ArrayList
}
public boolean checkStockItems(String itemName) {
for (Item item : tempStockList) {
if (item.getItemName().equalsIgnoreCase(itemName)) {
return true;
}
}
return false;
}}
测试类:
public class JdbcTest {
JdbcItemDao jdbcItemDao;
List<Item> tempStockList;
@Before
public void setup() {
jdbcItemDao = mock(JdbcItemDao.class);
tempStockList = new ArrayList<>();
tempStockList.add(new Item(1, "LEDTv", new BigInteger("40"),
new Integer("3"), new BigInteger("70")));
}
@Test
public void checkStockItemsName() throws Exception {
assertTrue(jdbcItemDao.checkStockItems("LEDTv"));
}}
【问题讨论】:
-
不确定是否需要模拟它。您不想调用 getAllStockItems 方法吗?
-
永远不要模拟你正在测试的课程:)
标签: java unit-testing testing mockito