JMockit_UT小結

1:模擬方法拋出異常

final AccessException ce = new AccessException();
       
        try
        {
            new Expectations(實例或類)
            {
                {
                    實例或類.方法;
                    throwsException(ce);
                }
            };
        }
        catch (AccessException e)
        {
            Assert.fail(e.toString());
        }

 

 2:模擬方法返回方法指定的值

 new Expectations(實例或類)
        {
            {
                TContextHolder.getBean(方法參數);
                returns(需要返回的值);
            }
        };

 

3:如果mock一個方法,但是用例調用多次時,mock會拋異常,解決方法如下:

 new Expectations(實例或類)
        {
            {
                TContextHolder.getBean(方法參數);
                returns(需要返回的值);

                repeats(該方法被調用次數);
            }
        };

 

4:設置靜態類、類的屬性值

new Expectations()
        {
            {
                // String type
                setField(類.class, "屬性名", 屬性名對應值);

                // Object type

                setField(類.class, "屬性名", 屬性名對應值);
            }
        };

 

5:如何測試類中定義的private方法

new Expectations(類)
        {
            {

                // private method
                invoke(類, "私有方法");
                returns("private method");
            }
        };

 

Deencapsulation.invoke(類, "私有方法")==“private method”

 

注意:

1:每執行一個用例(使用Mock),還是需要在對應Eclipse加mock對應jar.具體操作如下:

Eclipse->Run As ->Run Configurations->Junit->選中用例->Arguments(VM arguments)

2:如果在通過Mockit模擬類的實例或接口很難模擬時,建議可以繼承、實現這個類或對象。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章