亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在使用了 Spring Boot 和 MyBatis 的應用中使用 Mockito 測試

如何在使用了 Spring Boot 和 MyBatis 的應用中使用 Mockito 測試

郎朗坤 2019-03-22 11:15:33
在一個web項目的開發中,對于controller和service的測試,可以利用mockito框架來進行快速的單元測試。每個測試用例都只測試被測方法的功能,而不關系其調用的其他方法的功能是否正確。@RunWith(MockitoJUnitRunner.class)public class ActivityControllerTest {    @Mock    private ActivityService activitySearcher;    private ActivityController controller;    @Before    public void setUp() throws Exception {        controller = new ActivityController(activitySearcher);    }    @Test    public void should_return_activity_list() throws Exception {        List<Activity> activities = new ArrayList<Activity>(3);        for (int i = 1; i < 4; i++) {            Activity activity = new Activity();            activity.setId(i);            activity.setTitle("activity" + i);            activity.setCreateTime(1L);            activity.setEndTime(2L);            activity.setImg("/img/" + i + ".jpg");            activities.add(activity);        }        int page = 1;        when(activitySearcher.getList(page)).thenReturn(activities);        List<Activity> result = controller.getList(page);        assertThat(result, is(activities));    }}但是對于dao層,因為使用spring和mybatis整合,所以我只需要寫接口就可以完成工作:@Repository@Mapperpublic interface ActivityDao {    @Select("select id, title, content, create_time, end_time, img " +                    "from activity limit #{start}, #{offset}")    List<Activity> list(@Param("start") int start,                        @Param("offset") int offset);    @Insert("insert into activity(title, content, create_time, end_time, img)" +                    "value (#{title}, #{content}, #{createTime}, #{endTime}, #{img})")    int addActivity(Activity activity);}但是這樣,具體的實現就交給了框架完成了。這時,我仍舊希望能夠通過mockito框架來進行測試,模擬出數據庫連接和sql執行的結果,我應該用mock創建什么對象呢?是不是需要找到創建數據庫連接和執行sql的類,然后mock出來?但是我應該怎么去找到這些需要mock的類呢?
查看完整描述

2 回答

?
萬千封印

TA貢獻1891條經驗 獲得超3個贊

數據庫測試沒必要使用mock使用spring-test直接連接數據庫測試,在單元測試環境中事務會自動回滾,清理測試數據。這樣準確性高也簡單容易。


查看完整回答
反對 回復 2019-04-25
?
滄海一幻覺

TA貢獻1824條經驗 獲得超5個贊

題主知道怎么用junit測這個dao層嗎?


查看完整回答
反對 回復 2019-04-25
  • 2 回答
  • 0 關注
  • 895 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號