【发布时间】:2015-02-14 19:59:44
【问题描述】:
我在一个名为 FruitBasket 的类中有一个方法,我想这样测试它:
// Method to test
public Fruit getFruit(String fruitName) {
Fruit fruit = new Fruit();
if(fruitExists(fruitName)) {
fruit = getFruitByName(fruitName);
}
else {
fruit.setFruitName(fruitName);
saveFruit(fruit);
fruit = getFruitByName(fruitName);
}
return fruit;
}
private Fruit getFruitByName(String fruitName) {
return fruitDao.getFruitByName(fruitName);
}
public boolean fruitExists(String fruitName) {
return fruitDao.fruitExists(fruitName);
}
我为这个方法写了一个单元测试如下:
@Mock
FruitDao fruitDao;
@Mock
Fruit mockFruit;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
}
@Test
public void testgetFruitMethod() {
FruitBasket fruitBasket = new FruitBasket (fruitDao);
Fruit apple = fruitBasket.getFruit("Apple");
when(fruitDao.fruitExists(anyString())).thenReturn(true);
when(fruitDao.getFruitByName(anyString())).thenReturn(mockFruit);
assertThat(apple, instanceOf(Fruit.class));
}
但是测试失败并出现断言错误。应该是 Fruit 的实例,但返回的是 null。
谁能发现我为什么会变成空的问题?
【问题讨论】:
-
apple将如何受到您的when语句的影响? -
FruitBasket的构造函数是做什么的?
标签: java unit-testing mocking mockito