2015-05-21 69 views
0
public class SomeclassTobeTested { 

    public int doSomethingAndSendMail(){ 
     //... doing something 
     SomeStaticClass.sendEmail(args); 
    } 
} 

Public static SomeStaticClass implements Runnable{ 

    public void run(){ 
     sendMail(); 
    } 

    public static void senMail(args){ 

    //starts the thread 

    } 
} 

public class TestSomeClassToBeTested{ 

} 

所以現在我要驗證是否sendEmaildoSomethingAndSendMail()被調用?我應該嘲笑哪一堂課?而不是實際發送電子郵件。Mockito在另一個靜態類中驗證發送郵件的方法

回答

1

您無法使用Mockito驗證static方法。你必須使用Powermockito來做到這一點。

但是,我建議你重構你的代碼,這樣sendEmail方法是一個對象的成員,可能是一個依賴關係。然後可以嘲笑這種依賴性,並且可以用Mockito對該方法進行存根和驗證。必須使用Powermockito通常意味着不好的做法。

更多信息可以在這些答案中找到:Mocking static methods with MockitoWhy is using static helper methods in Java bad?

+0

你會如何測試,如果測試中的類使用的電子郵件發送API,比如Apache下議院電子郵件?這些API是面向對象的(沒有靜態的,帶有真實的對象),因此通常不被認爲是「壞習慣」;然而,他們不能被普通的Mockito嘲笑。 –

相關問題