首頁 > Java > java教程 > 主體

Mockito 中的 @Mock 與 @InjectMocks:何時使用哪一個?

Mary-Kate Olsen
發布: 2024-11-24 06:49:16
原創
368 人瀏覽過

@Mock vs. @InjectMocks in Mockito: When to Use Which?

何時在 Mockito 中使用 @Mock 與 @InjectMocks

Mockito 是 Java 中用於模擬和單元測試的流行框架。它提供了兩個用於模擬的註解:@Mock 和 @InjectMocks。了解它們的差異對於在測試中有效地利用模擬至關重要。

@Mock

@Mock 用來產生模擬物件。當您使用@Mock註解欄位時,Mockito會建立指定類別的物件並將其註冊為模擬。此模擬將遵循模擬介面的行為,為您的測試中的真實物件提供替代品。

@InjectMocks

相反,@InjectMocks 註解 a 的實例正在測試的類別。 Mockito 將使用 @Mock 註解建立的模擬物件注入到此實例中。這種技術可讓您在與特定模擬依賴項互動時測試被測類別的行為。

使用注意事項

要利用 @Mock 和 @InjectMocks,您'您需要初始化模擬並註入它們。在 JUnit 4 中,使用 @RunWith(MockitoJUnitRunner.class) 或 Mockito.initMocks(this)。對於 JUnit 5,使用 @ExtendWith(MockitoExtension.class)。

範例

考慮以下範例,說明@Mock 和@InjectMocks 的用法:

// JUnit 4
@RunWith(MockitoJUnitRunner.class)
public class SomeManagerTest {

    @InjectMocks
    private SomeManager someManager;

    @Mock
    private SomeDependency someDependency; // injected into someManager
    
    // tests...
}
登入後複製

在此範例中,someManager 注入了模擬實例someDependency。測試現在可以斷言 someManager 如何與此模擬互動。

結論

正確使用 @Mock 和 @InjectMocks 對於有效的基於 Mockito 的單元測試至關重要。透過清楚地了解他們的角色,您可以確保測試的準確性和可靠性。

以上是Mockito 中的 @Mock 與 @InjectMocks:何時使用哪一個?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板