第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

運(yùn)行 Mockito 測(cè)試時(shí),Spring @Autowired 字段為空

運(yùn)行 Mockito 測(cè)試時(shí),Spring @Autowired 字段為空

梵蒂岡之花 2021-11-17 14:44:53
這是我的主要代碼:@Servicepublic class MainService {    public String mainMethod() {        SomeService someService = new SomeService("required");        // do Sth.    }}@Service@RequiredArgsConstructorpublic class SomeService {    @Autowired    private SomeOtherService someOtherService;    @Notnull    private final String requiredField;    // ...}@Servicepublic class SomeOtherService {    // just a bunch of public methods that might as well be static}這是測(cè)試設(shè)置:@RunWith(SpringRunner.class)public class MainServiceTest {    @InjectMocks    private MainService mainService;    @Test    public void givenSth_whenSth_doSth() {        // test mainService.mainMethod();    }}你能告訴我為什么 SomeService 里面的 someOtherService 是空的嗎?我發(fā)現(xiàn)當(dāng)你使用 Spring 的注入時(shí),你不應(yīng)該同時(shí)使用手動(dòng)實(shí)例化 (new ...);所以也許new SomeService("required")是問(wèn)題所在?但是,如果不是通過(guò)構(gòu)造函數(shù)調(diào)用,我如何將字段變量注入 SomeService?我不想使用 Builder,因?yàn)?requiredField 應(yīng)該是 NotNull。
查看完整描述

2 回答

?
慕無(wú)忌1623718

TA貢獻(xiàn)1744條經(jīng)驗(yàn) 獲得超4個(gè)贊

對(duì)于集成測(cè)試,請(qǐng)考慮使用如下所示的上下文配置實(shí)例化 bean


@RunWith(SpringRunner.class)

@ContextConfiguration("mockito-config.xml")

詳細(xì)解釋請(qǐng)參考


https://blog.jayway.com/2011/11/30/spring-integration-tests-part-i-creating-mock-objects/

對(duì)于單元測(cè)試,請(qǐng)考慮使用 Mockito 提供的 @Mock 注釋。


在這個(gè)特定的例子中,我們可以模擬 SomeOtherService 如下所示


 @RunWith(SpringRunner.class)

 public class MainServiceTest {


 @InjectMocks

 private MainService mainService;


 @Mock

 private SomeOtherService someOtherService


 @Test

 public void givenSth_whenSth_doSth() {

     // test mainService.mainMethod();

 }

}

詳細(xì)解釋請(qǐng)參考以下帖子


http://www.vogella.com/tutorials/Mockito/article.html

http://static.javadoc.io/org.mockito/mockito-core/2.23.0/org/mockito/MockitoAnnotations.html


查看完整回答
反對(duì) 回復(fù) 2021-11-17
?
MM們

TA貢獻(xiàn)1886條經(jīng)驗(yàn) 獲得超2個(gè)贊

您可以按照 Adam Weidner 的教程使用MockBeanSpring Bean 并使用Spring 擴(kuò)展AbstractTestNGSpringContextTestTestNG


@TestExecutionListeners(MockitoTestExecutionListener.class)

@SpringBootTest

public class WidgetServiceIntegrationTest extends AbstractTestNGSpringContextTest {

@MockBean private SprockService sprockService;

@MockBean private SpringService springService;

@Autowired WidgetService widgetService;

@Test

public void testSomethingOnWidgetService() {

     when(sprockService.makeASprock()).thenReturn(...);


查看完整回答
反對(duì) 回復(fù) 2021-11-17
  • 2 回答
  • 0 關(guān)注
  • 465 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)