何時在 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中文網其他相關文章!