日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

java inject例子_java – 手动实例化@InjectMock带注释的字段

發(fā)布時間:2025/3/12 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java inject例子_java – 手动实例化@InjectMock带注释的字段 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

我已經(jīng)瀏覽了一些博客,以了解Mockito注釋如何工作的基礎(chǔ)知識.

但是,我懷疑何時可以手動實例化用@InjectMocks注釋的字段,即

@InjectMocks

A a = new A();

什么時候依靠MockitoAnnotations.initMocks()功能來做同樣的事情:

@InjectMocks

A a;

這取決于我們用來運行測試用例的JunitTestRunner還是依賴于Mockito框架版本?

解決方法:

這取決于你是否正在使用(聲明)跑步者.

如果你使用跑步者,你不需要自己調(diào)用MockitoAnnotations.initMocks() – 跑步者會為你調(diào)用它.

通常我們會選擇跑步者.但是當你想要使用其他跑步者時(比如Spring),你可以自己調(diào)用.initMocks().

為了清楚起見,MockitoAnnotations.initMocks(this)將:

>實例化使用@InjectMocks注釋的字段

>創(chuàng)建使用@Mock注釋的每個字段的模擬版本

>在@InjectMocks變量的字段中注入@Mocks(或調(diào)用其構(gòu)造函數(shù)或使用其setter – 它取決于您使用的依賴注入類型)

Mockito運行器,initMocks和規(guī)則代碼示例

下面的三個代碼示例應(yīng)該是等效的.

有跑者:

第一個片段使用了轉(zhuǎn)輪,無需調(diào)用initMocks().

@RunWith(MockitoJUnitRunner.class)

public class MyClassTest {

@Mock private MyDependency myDependency;

@InjectMocks private MyClass myClass;

@Test

public void myClass_should_get_stuff_from_dependency() {

when(myDependency.getStuff()).thenReturn("stuff!");

assertThat(myClass.getDependencyStuff(), is("stuff!"));

}

}

沒有跑步者手動調(diào)用.initMocks():

另一個不使用runner,因此需要setUp()方法調(diào)用我們的initMocks()朋友.

// notice there is no runner

public class MyClassTest {

@Mock private MyDependency myDependency;

@InjectMocks private MyClass myClass;

// but now you have to call initMocks() yourself

@Before

public void setUp() throws Exception {

MockitoAnnotations.initMocks(this);

}

@Test

public void myClass_should_get_stuff_from_dependency() {

when(myDependency.getStuff()).thenReturn("stuff!");

assertThat(myClass.getDependencyStuff(), is("stuff!"));

}

}

沒有跑步者或手動呼叫,使用@Rule:

public class MyClassTest {

@Rule

public MockitoRule rule = MockitoJUnit.rule();

@Mock private MyDependency myDependency;

@InjectMocks private MyClass myClass;

@Test

public void myClass_should_get_stuff_from_dependency() {

when(myDependency.getStuff()).thenReturn("stuff!");

assertThat(myClass.getDependencyStuff(), is("stuff!"));

}

}

來源:http://www.icode9.com/content-1-210351.html

總結(jié)

以上是生活随笔為你收集整理的java inject例子_java – 手动实例化@InjectMock带注释的字段的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。