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

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

如何在 java 中的 mockito 中為 Map 對(duì)象創(chuàng)建參數(shù)捕獲器?

如何在 java 中的 mockito 中為 Map 對(duì)象創(chuàng)建參數(shù)捕獲器?

www說(shuō) 2022-10-26 16:40:10
如何創(chuàng)建參數(shù)捕獲器Map<String, SomeCustomClass>?我的代碼遵循以下模式:import java.util.HashMap;import java.util.Map;public class CompoundClass {   public CompoundClass (String a, String b){       this.a = a;       this.b = b;   }   public String a;   public String b;}public class SubClass {    public void doSomeThingSubClass(Map<String, CompoundClass> mapSb) {        ...    }}public class Example {    public SubClass sb;    public Example(SubClass sb) {        this.sb = sb;    }    public void doSomeThing () {        Map<String, CompoundClass> mapSb = new HashMap<>();        mapSb.put("x", new CompoundClass("aa","bb"));        sb.doSomeThingSubClass(mapSb);    }}而且我想測(cè)試是否調(diào)用了該方法doSomethingSubClass(mapSb),因此我需要能夠檢查它被調(diào)用的參數(shù)。為此,我進(jìn)行了以下單元測(cè)試:@Testvoid TestDoSomehing(){    SubClass sb = mock(SubClass.class);        Example ex = new Example(sb);        ArgumentCaptor<Map<String, CompoundClass>> argCaptor = ArgumentCaptor.forClass(Map<String, CompoundClass>.class);    ex.doSomeThing();    verify(sb).doSomeThingSubClass(argCaptor.capture());        System.out(argCaptor.getValue().get('x').a);}問(wèn)題是 argCaptor 的上述初始化會(huì)產(chǎn)生以下錯(cuò)誤消息:“無(wú)法從參數(shù)化類(lèi)型中選擇”。因此,問(wèn)題是如何以正確的方式聲明一個(gè)映射對(duì)象的參數(shù)捕獲器的初始化,例如Map<String, SomeCustomeClass>?提前致謝!
查看完整描述

2 回答

?
FFIVE

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

你可以這樣做:


與@SuppressWarnings("未選中")


  @Test

  @SuppressWarnings("unchecked")

  void TestDoSomething(){

    SubClass sb = mock(SubClass.class);


    Example ex = new Example(sb);


    ArgumentCaptor<Map<String, CompoundClass>> argCaptor = ArgumentCaptor.forClass(Map.class);


    ex.doSomeThing();


    verify(sb).doSomeThingSubClass(argCaptor.capture());


    System.out.println(argCaptor.getValue().get("x").a);

  }

或使用 junit5 和 @Captor 注釋?zhuān)?/p>


import static org.mockito.Mockito.mock;

import static org.mockito.Mockito.verify;


import java.util.HashMap;

import java.util.Map;

import org.junit.jupiter.api.Test;

import org.junit.jupiter.api.TestInstance;

import org.junit.jupiter.api.TestInstance.Lifecycle;

import org.junit.jupiter.api.extension.ExtendWith;

import org.mockito.ArgumentCaptor;

import org.mockito.Captor;

import org.mockito.junit.jupiter.MockitoExtension;


@ExtendWith(MockitoExtension.class)

@TestInstance(Lifecycle.PER_METHOD)

public class TestDoSomething {


  @Captor

  private ArgumentCaptor<Map<String, CompoundClass>> argCaptor;


  @Test

  void TestDoSomething2(){

    SubClass sb = mock(SubClass.class);


    Example ex = new Example(sb);


    ex.doSomeThing();


    verify(sb).doSomeThingSubClass(argCaptor.capture());


    System.out.println(argCaptor.getValue().get("x").a);

  }

}



查看完整回答
反對(duì) 回復(fù) 2022-10-26
?
莫回?zé)o

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

可以使用 Mockito 的Captor注解來(lái)聲明ArgumentCaptor.


例如,以下測(cè)試編譯并輸出aa:


@Captor

private ArgumentCaptor<Map<String, CompoundClass>> argCaptor;


@Test

void TestDoSomehing(){

    MockitoAnnotations.initMocks(this);


    SubClass sb = mock(SubClass.class);


    Example ex = new Example(sb);


    ex.doSomeThing();


    verify(sb).doSomeThingSubClass(argCaptor.capture());


    System.out.println(argCaptor.getValue().get("x").a);

}

從Javadocs:


使用注釋的優(yōu)點(diǎn)之一@Captor是您可以避免與捕獲復(fù)雜泛型類(lèi)型相關(guān)的警告。


查看完整回答
反對(duì) 回復(fù) 2022-10-26
  • 2 回答
  • 0 關(guān)注
  • 199 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(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)