package com.fitaxis.test;
import java.sql.SQLException;
import org.junit.Assert;
import org.junit.Test;
import org.mockito.Mockito;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
import static org.mockito.Mockito.*;
import com.fitaxis.leaderboard.LeaderBoard;
public class LeaderBoardTests {
@Test
public void TestThatDataIsSavedToTheDatabase()
{
LeaderBoard leaderBoard = mock(LeaderBoard.class);
//doNothing().doThrow(new RuntimeException()).when(leaderBoard).saveData();
when(leaderBoard.saveData()).thenReturn(true);
boolean res = leaderBoard.saveData();
verify(leaderBoard).saveData();
Assert.assertTrue(res);
}
}
我已经使用mockito来模拟一个类,但是当我使用代码覆盖率时,它没有检测到该方法被调用。难道我做错了什么?请帮忙!
看起来您正在模拟对生产代码进行的唯一调用。
换句话说,你的测试表明:
- 当我打电话时
saveData()
,伪造结果返回 true
- 现在打电话
saveData()
- 是的,结果是真的!
据我所知,您的生产代码根本没有被调用。
模拟的目的是模拟生产类中的依赖关系,或者(有时,尽管我不喜欢)模拟生产类中您实际测试的代码将调用的某些方法。
你应该probably嘲笑的依赖关系Leaderboard
而不是Leaderboard
本身。如果你must模拟出来saveData()
,你应该测试的方法call saveData()
...检查它们是否保存了正确的数据,以及它们在何时正确运行saveData()
返回 false 等
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)