JUnit 测试失败并出现错误 "Wanted but not invoked" - 如何修复损坏的 Unittest?
JUnit Test fails with error "Wanted but not invoked" - how to fix broken Unittest?
我有一个 Java class 想要测试;它应该在视图中显示直接付款授权书:
package com.xxx.provider;
import static xxx.Constants.DATE_FORMATTER;
import com.xxx.business.druck.DruckDaten;
import com.xxx.business.druck.DruckKategorie;
import com.xxx.business.druck.DruckParameter;
import com.xxx.services.model.Angebot;
import com.xxx.services.model.Beitragszahler;
import com.xxx.services.model.Inkassodaten;
import com.xxx.services.model.partner.NatuerlichePerson;
import com.xxx.services.model.partner.Partner;
import com.xxx.services.model.partner.PartnerTyp;
import java.io.Serializable;
import java.time.LocalDate;
import java.util.HashMap;
import java.util.Map;
import java.util.stream.Collectors;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;
@Component
@RequiredArgsConstructor
public class DruckDatenProviderSepaMandat extends AbstractAngebotAntragDruckdatenProvider {
private static final String SEPAMANDAT_FO = "sepamandat_konsolidiert.fo";
private final AntragsnummerDruckdatenProvider antragsnummerDruckdatenProvider;
public DruckDaten provideDruckdaten(
Angebot angebot,
Partner partner,
Beitragszahler beitragszahler,
NatuerlichePerson natuerlichePerson) {
DruckDaten druckDaten = new DruckDaten();
Map<String, Serializable> parameters = new HashMap<>();
addBeitragszahler(parameters, angebot);
Inkassodaten inkassodaten = beitragszahler.getInkassodaten();
putAllgemeineDaten(parameters);
mapWithFormatted(parameters, "anwendung", "ExpertOnline");
mapWithFormatted(parameters, "antragsnummer", "xxx");
mapWithFormatted(parameters, "antragseinreichungsArt", "xxx");
mapWithFormatted(parameters, "antragsDatum", DATE_FORMATTER.format(LocalDate.now()));
mapWithFormatted(parameters, "dokumentTyp", "xxx");
mapWithFormatted(parameters, "bic", inkassodaten.getBic());
mapWithFormatted(parameters, "hausnummerBeitragszahler", "xxx");
mapWithFormatted(parameters, "iban", "Grundfaehigkeit");
mapWithFormatted(parameters, "istVoransicht", false);
mapWithFormatted(parameters, "istTeilantrag", false);
mapWithFormatted(parameters, "antragseinreichungsArt", "Unterschrift");
mapWithFormatted(parameters, "logischJa", true);
mapWithFormatted(parameters, "logischNein", false);
mapWithFormatted(parameters, "name", "xxx");
mapWithFormatted(parameters, "nameBeitragszahler", "xxx");
if (partner.getNamenszusatz() != null) {
mapWithFormatted(parameters, "namenszusatzBeitragszahler", partner.getNamenszusatz());
}
mapWithFormatted(parameters, "ortBeitragszahler", partner.getZustelladresse().getOrtsname());
mapWithFormatted(
parameters, "plzBeitragszahler", partner.getZustelladresse().getPostleitzahl());
mapWithFormatted(parameters, "pnrBeitragszahler", partner.getPnr());
mapWithFormatted(parameters, "rechtsformBeitragszahler", PartnerTyp.NATUERLICHE_PERSON);
mapWithFormatted(parameters, "strasse", partner.getZustelladresse().getStrassenname());
mapWithFormatted(
parameters, "strasseBeitragszahler", partner.getZustelladresse().getStrassenname());
mapWithFormatted(parameters, "titelBeitragszahler", natuerlichePerson.getTitel());
mapWithFormatted(parameters, "vornameBeitragszahler", partner.getName());
antragsnummerDruckdatenProvider.provideDruckdaten(angebot, parameters);
druckDaten.setKategorie(DruckKategorie.MANDAT);
druckDaten.setName(SEPAMANDAT_FO);
druckDaten.setBenoetigtVermittlerDaten(true);
druckDaten.setParameter(
parameters.entrySet().stream()
.map(entry -> new DruckParameter(entry.getKey(), entry.getValue()))
.collect(Collectors.toList()));
return druckDaten;
}
@Override
public DruckDaten provideDruckdaten(Angebot angebot) {
return null;
}
public boolean isResponsibleFor(
DruckKategorie kategorie, Map<String, String> documentSpecificParam) {
return kategorie == DruckKategorie.MANDAT;
}
@Override
public boolean isResponsibleFor(Angebot angebot, Map<String, String> druckstueckKeys) {
return super.isResponsibleFor(angebot, druckstueckKeys);
}
@Override
public void mapWithFormatted(Map<String, Serializable> parameter, String key, Serializable value) {
super.mapWithFormatted(parameter, key, value);
}
@Override
public boolean matchDruckKategorie(Map<String, String> druckstueckKey, DruckKategorie druckKategorie) {
return super.matchDruckKategorie(druckstueckKey, druckKategorie);
}
@Override
public boolean isAntragValidMarkedSet(Map<String, String> druckstueckKeys) {
return super.isAntragValidMarkedSet(druckstueckKeys);
}
}
用于测试此 class 的单元测试 Class 如下所示:
package com.xxx.services.business.druck.provider;
import static com.xxx.services.business.commons.Constants.DATE_FORMATTER;
import static org.mockito.ArgumentMatchers.eq;
import com.xxx.services.TestUtil;
import com.xxx.services.business.druck.DruckDaten;
import com.xxx.business.druck.DruckKategorie;
import com.xxx.services.model.Angebot;
import java.time.LocalDate;
import java.util.Arrays;
import org.assertj.core.api.SoftAssertions;
import org.assertj.core.api.WithAssertions;
import org.assertj.core.api.junit.jupiter.SoftAssertionsExtension;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.junit.jupiter.MockitoExtension;
@ExtendWith(MockitoExtension.class)
@SuppressWarnings("java:S2970")
@ExtendWith(SoftAssertionsExtension.class)
class DruckDatenProviderSepaMandatTest implements WithAssertions {
@Mock AntragsnummerDruckdatenProvider antragsnummerDruckdatenProvider;
@InjectMocks
DruckDatenProviderSepaMandat druckDatenProviderSepaMandat;
@Test
public void provideDruckdatenTest(SoftAssertions softly) {
// GIVEN
Angebot angebot = TestUtil.createAngebot();
// WHEN
DruckDaten druckDaten = druckDatenProviderSepaMandat.provideDruckdaten(angebot);
// THEN
softly.assertThat(druckDaten).isNotNull();
softly
.assertThat(druckDaten.get("antragsDatum"))
.isEqualTo(DATE_FORMATTER.format(LocalDate.now()));
softly.assertThat(druckDaten.get("rechtsformBeitragszahler")).isEqualTo("Privatperson");
softly.assertThat(druckDaten.get("namenszusatzBeitragszahler")).isEqualTo("Namenszusatz");
softly.assertThat(druckDaten.get("titelBeitragszahler")).isEqualTo("Graf");
softly.assertThat(druckDaten.get("vornameBeitragszahler")).isEqualTo("xxx");
softly.assertThat(druckDaten.get("nameBeitragszahler")).isEqualTo("xxx");
softly.assertThat(druckDaten.get("pnrBeitragszahler")).isEqualTo("xxx");
softly.assertThat(druckDaten.get("plzBeitragszahler")).isEqualTo("xxx");
softly.assertThat(druckDaten.get("ortBeitragszahler")).isEqualTo("xxx");
softly.assertThat(druckDaten.get("strasseBeitragszahler")).isEqualTo("xxx.");
softly.assertThat(druckDaten.get("hausnummerBeitragszahler")).isEqualTo("x");
softly.assertThat(druckDaten.get("iban")).isEqualTo("xxxxxxxxxxxxxxxxx0000");
softly.assertThat(druckDaten.get("bic")).isEqualTo("BIC00000000");
softly.assertThat(druckDaten.get("bank")).isEqualTo("Kreditinstitut");
}
@Test
public void antragsnummerTest(SoftAssertions softly) {
Angebot angebot = TestUtil.createAngebot();
angebot.getAntrag().setAntragsnummer("xxx");
// THEN
DruckDaten daten = druckDatenProviderSepaMandat.provideDruckdaten(angebot);
Mockito.verify(antragsnummerDruckdatenProvider, Mockito.times(1))
.provideDruckdaten(eq(angebot), Mockito.anyMap());
}
@Test
public void isResponsibleFor(SoftAssertions softly) {
softly
.assertThat(druckDatenProviderSepaMandat.isResponsibleFor(DruckKategorie.MANDAT, null))
.isTrue();
Arrays.stream(DruckKategorie.values())
.filter(druckKategorie -> DruckKategorie.MANDAT != druckKategorie)
.forEach(
kategorie ->
softly
.assertThat(druckDatenProviderSepaMandat.isResponsibleFor(kategorie, null))
.isFalse());
}
}
测试 Class 失败并出现以下错误,虽然我投入了大量的网络研究,但我自己也无法弄明白;因此,如果能提供有关如何解决此错误以及如何使测试 Class 再次运行的任何有用提示,我将非常高兴:
Wanted but not invoked:
antragsnummerDruckdatenProvider.provideDruckdaten(
Angebot(angebotId=null, angebotApiId=null, warenkorbApiId=xxx, provisionsbeitragssumme=null, antrag=Antrag(antragId=null, antragsnummer=xxx, antragsteller=Antragsteller(antragstellerId=null, gbs=00, partnerdaten=Partner(partnerId=null, natuerlichePerson=NatuerlichePerson(natuerlichePersonId=null, anrede=EINTRAG2, anredezusatz=null, titel=xxx, vorname=xxx, geburtsname=null, geburtsort=null, geburtsdatum=xxx, familienstand=UNBEKANNT, beruf=Experte), zustelladresse=Zustelladresse(zustelladresseId=null, laenderkennzeichen=EINTRAG51, postleitzahl=xxx, ortsname=xxx, ortsteilname=xxx, strassenname=xxx, hausnummer=x, adressmerkmal=EINTRAG0, adresszusatz=zusatz), onlineAdressen=[], telekommunikation=[], partnerTyp=NATUERLICHE_PERSON, rechtsform=EINTRAG1, name=xxx, namenszusatz=Namenszusatz, nationalitaet=EINTRAG0, pnr=xxx, arbeitgeber=null, branche=null, steuerid=null, telefonkontakt=null, partnergemeinschaftsart=null), brancheGbs=SONSTIGE, arbeitsverhaeltnisGbs=OHNE_TAETIGKEIT, vorhandeneAnbuendelungen=[xxx], sondervereinbarungArbeitgeber=[Sondervereinbarung(id=null, agpnr=null, agname=Arbeitgeber, agvereinb1=null, agvereinb2=null, agpnrLeben=null)], sondervereinbarungMitgliedschaften=[Sondervereinbarung(id=null, agpnr=null, agname=Mitgliedschaft, agvereinb1=null, agvereinb2=null, agpnrLeben=null)], bezugsperson=Bezugsperson(id=null, vorname=xxx, nachname=xxx, arbeitgeber=xxx, verwandtschaftsgrad=drei, gemeinsamerHaushalt=JA)), versichertePerson=VersichertePerson(id=null, gbs=null, partnerdaten=Partner(partnerId=null, natuerlichePerson=NatuerlichePerson(natuerlichePersonId=null, anrede=EINTRAG2, anredezusatz=null, titel=null, vorname=xxx, geburtsname=null, geburtsort=null, geburtsdatum=xxx, familienstand=UNBEKANNT, beruf=xxx), zustelladresse=Zustelladresse(zustelladresseId=null, laenderkennzeichen=EINTRAG51, postleitzahl=xxx, ortsname=xxx, ortsteilname=xxx, strassenname=xxx., hausnummer=x, adressmerkmal=EINTRAG0, adresszusatz=zusatz), onlineAdressen=[], telekommunikation=[], partnerTyp=NATUERLICHE_PERSON, rechtsform=EINTRAG1, name=Blöd, namenszusatz=null, nationalitaet=EINTRAG0, pnr=null, arbeitgeber=null, branche=null, steuerid=null, telefonkontakt=null, partnergemeinschaftsart=null), brancheGbs=null, arbeitsverhaeltnisGbs=null, compassInformation=CompassInformation(id=null, arbeitsverhaeltnis=ANGESTELLTE, berufsgruppe=BERUFSGRUPPE_1, risikoklasse=RISIKOKLASSE_1, xxx=xxx, xxx=null, berufsId=null), gesundheitsfragen=Gesundheitsfragen(id=null, anzeigepflichtbelehrungAnswer=false, beantworteteGesundheitsfragen=[]), xxx=false, xxx=xxx(id=null, mhsGewuenscht=JA, terminvereinbarungsart=PER_EMAIL, email=test@web.de, telefonnummer=Telekommunikation(telekommunikationId=null, telekommunikationArt=PRIVAT, telekommunikationTyp=FESTNETZ, landvorwahl=+49, vorwahl=xxx, rufnummer=xxx), zustelladresse=Zustelladresse(zustelladresseId=null, laenderkennzeichen=EINTRAG51, postleitzahl=xxx, ortsname=xxx, ortsteilname=xxx, strassenname=xxx, hausnummer=x, adressmerkmal=EINTRAG0, adresszusatz=zusatz), telefonischVon=xxx, telefonischBis=xxx, xxx=JA, xxx=aua)), bezugsberechtigtePerson=BezugsberechtigtePerson(id=0, naeheverhaeltnis=UNBEKANNT, artBezugsrechtErleben=WIDERRUFLICH, xxx=VERSICHERTE_PERSON, artNaeheverhaeltnis=null, gbs=null, brancheGbs=null, arbeitsverhaeltnisGbs=null, partnerdaten=Partner(partnerId=null, natuerlichePerson=NatuerlichePerson(natuerlichePersonId=null, anrede=EINTRAG2, anredezusatz=null, titel=null, vorname=xxx, geburtsname=null, geburtsort=null, geburtsdatum=xxx, familienstand=UNBEKANNT, beruf=xxx), zustelladresse=Zustelladresse(zustelladresseId=null, laenderkennzeichen=EINTRAG51, postleitzahl=xxx, ortsname=xxx, ortsteilname=xxx, strassenname=xxx, hausnummer=x, adressmerkmal=EINTRAG0, adresszusatz=zusatz), onlineAdressen=[], telekommunikation=[], partnerTyp=NATUERLICHE_PERSON, rechtsform=EINTRAG1, name=xxx, namenszusatz=null, nationalitaet=EINTRAG0, pnr=null, arbeitgeber=null, branche=null, steuerid=null, telefonkontakt=null, partnergemeinschaftsart=null)), beitragszahler=Beitragszahler(beitragszahlerId=null, gbs=null, partnerdaten=Partner(partnerId=null, natuerlichePerson=NatuerlichePerson(natuerlichePersonId=null, anrede=EINTRAG2, anredezusatz=null, titel=xxx, vorname=xxx, geburtsname=null, geburtsort=null, geburtsdatum=xxx, familienstand=UNBEKANNT, beruf=Experte), zustelladresse=Zustelladresse(zustelladresseId=null, laenderkennzeichen=EINTRAG51, postleitzahl=xxx, ortsname=xxx, ortsteilname=xxx, strassenname=xxx, hausnummer=x, adressmerkmal=EINTRAG0, adresszusatz=zusatz), onlineAdressen=[], telekommunikation=[], partnerTyp=NATUERLICHE_PERSON, rechtsform=EINTRAG1, name=xxx, namenszusatz=Namenszusatz, nationalitaet=EINTRAG0, pnr=xxx, arbeitgeber=null, branche=null, steuerid=null, telefonkontakt=null, partnergemeinschaftsart=null), brancheGbs=null, arbeitsverhaeltnisGbs=null, antragstellerGleichBeitragszahler=JA, inkassodaten=Inkassodaten(inkassodatenId=null, zahlungsart=LASTSCHRIFT, iban=xxx, bic=xxx, kreditinstitut=Kreditinstitut, mandatsreferenznummer=null, ibanErrorCode=null)), vermittlerdaten=xxx.services.model.xxx, beratungsprotokoll=Beratungsprotokoll(id=null, beratungZuSpaeteremTerminErwuenscht=NEIN, spaetereBeratungDatum=null, zusaetzlicheHinweiseAntragstellerVorhanden=NEIN, zusaetzlicheHinweiseAntragstellerText=null, beratenePersonNichtAntragsteller=NEIN, verhaeltnisBeratenePersonZumAntragsteller=null, beratenePerson=null, weitereTeilnehmerVorhanden=NEIN, ersterWeitererTeilnehmer=null, zweiterWeitererTeilnehmer=null, dritterWeitererTeilnehmer=null), aktionsnummer=null, aufnahmeort=EINTRAG0, kundeninformationMedium=DATEI_EMAIL, kundeninformationStand=null, nebenabredenVorhanden=NEIN, nebenabreden=null, endeSchulzeit=null, schweigepflichtentbindungErlebensfall=null, schweigepflichtentbindungTodesfall=null, kundeninformationEmailVersandt=false, antragValid=false), unternehmensKennzeichen=N, besondereAntragsaufnahme=NEIN, beratungsfragen=[Beratungsfrage(id=null, absicherung=null, type=BEITRAGS_DYNAMIK), Beratungsfrage(id=null, absicherung=null, type=SCHWERE_KRANKHEITEN), Beratungsfrage(id=null, absicherung=null, type=JAEHRLICHE_ERHOEHUNG_LEISTUNGSFALL), Beratungsfrage(id=null, absicherung=null, type=KRANKENTAGEGELD)], produktlinienfragen=[Produktlinienfrage(id=null, type=VERLUST_GLEICHGEWICHTSINN, ausgewaehlt=null), Produktlinienfrage(id=null, type=VERLUST_FINGERFERTIGKEIT, ausgewaehlt=null), Produktlinienfrage(id=null, type=VERLUST_INTELLEKTUELLE_FAEHIGKEITEN, ausgewaehlt=null), Produktlinienfrage(id=null, type=PLUS_EMPFOHLEN, ausgewaehlt=null), Produktlinienfrage(id=null, type=VERLUST_FAEHIGKEIT_EIGENVERANTWORTLICHES_HANDELN, ausgewaehlt=null), Produktlinienfrage(id=null, type=VERLUST_FAEHIGKEIT_AUTOFAHREN, ausgewaehlt=null)], risiken=[Risiko(id=null, kosten=Kosten(kostenId=null, gesamtzillmerKosten=4.45, amortisationsKosten=20.0, prozentualeAmortisationskosten=4.2, prozentualeUngezillmerteAbschlussAmortisationsKosten=4, absoluteUngezillmerteAbschlusskosten=25.0, prozentualeUngezillmerteAbschlusskosten=33.33, prozentualeEinmaligeGezillmerteAbschlusskosten=1.23, verwaltungsKosten=18.2, verwaltungsKostenLeistung=25.66, verwaltungsKostenBeitragsfrei=30.9, prozentualeVerwaltungskostenBeitrag=5, prozentualeVerwaltungskostenBeitragsfrei=5, absoluteAusProzentualeVerwaltungskostenBeitragsfrei=null, absoluteVerwaltungskostenLeistungsfall=400), risikoKennung=KRANKHEIT, tarifkennung=xxxx, tarifgeneration=2018_07, ueberschussverwendungssystem=VORWEGABZUG, leistungsende=2059-10-01, versicherungsende=2060-10-01, beitragszahlungsende=2058-10-01, beitrag=50, vorwegabzug=5, rente=null, versicherungssumme=24000), Risiko(id=null, kosten=Kosten(kostenId=null, gesamtzillmerKosten=12.45, amortisationsKosten=20.0, prozentualeAmortisationskosten=4.2, prozentualeUngezillmerteAbschlussAmortisationsKosten=4, absoluteUngezillmerteAbschlusskosten=25.0, prozentualeUngezillmerteAbschlusskosten=33.33, prozentualeEinmaligeGezillmerteAbschlusskosten=1.23, verwaltungsKosten=18.2, verwaltungsKostenLeistung=25.66, verwaltungsKostenBeitragsfrei=30.9, prozentualeVerwaltungskostenBeitrag=5, prozentualeVerwaltungskostenBeitragsfrei=5, absoluteAusProzentualeVerwaltungskostenBeitragsfrei=null, absoluteVerwaltungskostenLeistungsfall=null), risikoKennung=GRUNDFAEHIGKEIT, tarifkennung=GF, tarifgeneration=2018_07, ueberschussverwendungssystem=VORWEGABZUG, leistungsende=2056-10-01, versicherungsende=2057-10-01, beitragszahlungsende=2055-10-01, beitrag=100, vorwegabzug=15, rente=1000, versicherungssumme=null)], verlaeufe=[Verlaufzeile(verlaufzeileId=null, verlauftyp=GARANTIE_LEISTUNG_WERTE_OHNE_DYNAMIK, verlaufzeileIndex=0, verlaufzeileDatum=2021-05-15, beitragGesamt=10.1, renteGrundfaehigkeit=120.12, renteBeitragsfreiGrundfaeigkeit=11.11, versicherungssummeBeitragsfreiSchwereKrankheiten=13.13, stornoabschlag=5.0), Verlaufzeile(verlaufzeileId=null, verlauftyp=GARANTIE_LEISTUNG_WERTE_OHNE_DYNAMIK, verlaufzeileIndex=1, verlaufzeileDatum=2022-05-15, beitragGesamt=20.2, renteGrundfaehigkeit=230.22, renteBeitragsfreiGrundfaeigkeit=22.22, versicherungssummeBeitragsfreiSchwereKrankheiten=23.23, stornoabschlag=10.0), Verlaufzeile(verlaufzeileId=null, verlauftyp=GARANTIE_LEISTUNG_WERTE_MIT_DYNAMIK, verlaufzeileIndex=0, verlaufzeileDatum=2021-05-15, beitragGesamt=90.9, renteGrundfaehigkeit=920.92, renteBeitragsfreiGrundfaeigkeit=99.99, versicherungssummeBeitragsfreiSchwereKrankheiten=93.93, stornoabschlag=5.0)], vorversicherungsnummer=123456785, aktuellerStatus=UNVOLLSTAENDIG, bavGewuenscht=JA, vitaProtectGewuenscht=NEIN, produktEmpfehlung=GF, mitReduziertenAnfangsbeitraegen=DYNAMIK_UND_NACHVERSICHERUNGSGARANTIE, zahlungsrhythmus=VIERTELJAEHRLICH, prozentsatzDynamik=DYNAMIK_03, prozentsatzDynamikArt=INDIVIDUELL, berechnungsBasis=_RENTE, prozentsatzRentensteigerung=DYNAMIK_01, zahlungsrhythmusRente=MONATLICH, versicherungsbeginn=2020-06-01, mitPlusPaket=JA, mitSchwereKrankheiten=JA, berechnungsBasisBeitrag=150, berechnungsBasisRente=1000, gesamtBeitrag=333.33, berechnungsBasisDatum=ENDALTER, versicherungsEndalter=65, beitragszahlungsEndalter=66, leistungsEndalter=67, versicherungsDauerInMonaten=165, beitragszahlungsDauerInMonaten=266, leistungsDauerInMonaten=367, endalterMonatsgenauZumGeburtsdatum=JA, angebotValid=false),
<any map>
);
-> at com.devk.vpu.grundfaehigkeit.services.business.druck.provider.DruckDatenProviderSepaMandatTest.antragsnummerTest(DruckDatenProviderSepaMandatTest.java:70)
Actually, there were zero interactions with this mock.
Wanted but not invoked:
(...)
-> 在 com.xxx.DruckDatenProviderSepaMandatTest.antragsnummerTest(DruckDatenProviderSepaMandatTest.java:70)
实际上,与此模拟的交互为零。
at com.xxx.provider.DruckDatenProviderSepaMandatTest.antragsnummerTest(DruckDatenProviderSepaMandatTest.java:70)
at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:725)
at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:149)
at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:140)
at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:84)
at org.junit.jupiter.engine.execution.ExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod[=14=](ExecutableInvoker.java:115)
at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke[=14=](ExecutableInvoker.java:105)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:104)
at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:98)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod(TestMethodTestDescriptor.java:214)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:210)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:135)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:66)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively(NodeTestTask.java:151)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively(NodeTestTask.java:141)
at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively(NodeTestTask.java:139)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1541)
at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively(NodeTestTask.java:155)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively(NodeTestTask.java:141)
at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively(NodeTestTask.java:139)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1541)
at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively(NodeTestTask.java:155)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively(NodeTestTask.java:141)
at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively(NodeTestTask.java:139)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35)
at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:107)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute[=14=](EngineExecutionOrchestrator.java:54)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52)
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114)
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86)
at org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86)
at org.junit.platform.launcher.core.SessionPerRequestLauncher.execute(SessionPerRequestLauncher.java:53)
at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:71)
at com.intellij.rt.junit.IdeaTestRunner$Repeater.execute(IdeaTestRunner.java:38)
at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11)
at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35)
at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:235)
at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54)
您的模拟匹配项可能不匹配。您提供了一个 'angebot' 但这是一个新对象,在实际调用期间与 'angebot' 不匹配。我认为使用 'any()' 之类的东西是更好的选择。
provideDruckdaten(eq(angebot), Mockito.anyMap())
我有一个 Java class 想要测试;它应该在视图中显示直接付款授权书:
package com.xxx.provider;
import static xxx.Constants.DATE_FORMATTER;
import com.xxx.business.druck.DruckDaten;
import com.xxx.business.druck.DruckKategorie;
import com.xxx.business.druck.DruckParameter;
import com.xxx.services.model.Angebot;
import com.xxx.services.model.Beitragszahler;
import com.xxx.services.model.Inkassodaten;
import com.xxx.services.model.partner.NatuerlichePerson;
import com.xxx.services.model.partner.Partner;
import com.xxx.services.model.partner.PartnerTyp;
import java.io.Serializable;
import java.time.LocalDate;
import java.util.HashMap;
import java.util.Map;
import java.util.stream.Collectors;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;
@Component
@RequiredArgsConstructor
public class DruckDatenProviderSepaMandat extends AbstractAngebotAntragDruckdatenProvider {
private static final String SEPAMANDAT_FO = "sepamandat_konsolidiert.fo";
private final AntragsnummerDruckdatenProvider antragsnummerDruckdatenProvider;
public DruckDaten provideDruckdaten(
Angebot angebot,
Partner partner,
Beitragszahler beitragszahler,
NatuerlichePerson natuerlichePerson) {
DruckDaten druckDaten = new DruckDaten();
Map<String, Serializable> parameters = new HashMap<>();
addBeitragszahler(parameters, angebot);
Inkassodaten inkassodaten = beitragszahler.getInkassodaten();
putAllgemeineDaten(parameters);
mapWithFormatted(parameters, "anwendung", "ExpertOnline");
mapWithFormatted(parameters, "antragsnummer", "xxx");
mapWithFormatted(parameters, "antragseinreichungsArt", "xxx");
mapWithFormatted(parameters, "antragsDatum", DATE_FORMATTER.format(LocalDate.now()));
mapWithFormatted(parameters, "dokumentTyp", "xxx");
mapWithFormatted(parameters, "bic", inkassodaten.getBic());
mapWithFormatted(parameters, "hausnummerBeitragszahler", "xxx");
mapWithFormatted(parameters, "iban", "Grundfaehigkeit");
mapWithFormatted(parameters, "istVoransicht", false);
mapWithFormatted(parameters, "istTeilantrag", false);
mapWithFormatted(parameters, "antragseinreichungsArt", "Unterschrift");
mapWithFormatted(parameters, "logischJa", true);
mapWithFormatted(parameters, "logischNein", false);
mapWithFormatted(parameters, "name", "xxx");
mapWithFormatted(parameters, "nameBeitragszahler", "xxx");
if (partner.getNamenszusatz() != null) {
mapWithFormatted(parameters, "namenszusatzBeitragszahler", partner.getNamenszusatz());
}
mapWithFormatted(parameters, "ortBeitragszahler", partner.getZustelladresse().getOrtsname());
mapWithFormatted(
parameters, "plzBeitragszahler", partner.getZustelladresse().getPostleitzahl());
mapWithFormatted(parameters, "pnrBeitragszahler", partner.getPnr());
mapWithFormatted(parameters, "rechtsformBeitragszahler", PartnerTyp.NATUERLICHE_PERSON);
mapWithFormatted(parameters, "strasse", partner.getZustelladresse().getStrassenname());
mapWithFormatted(
parameters, "strasseBeitragszahler", partner.getZustelladresse().getStrassenname());
mapWithFormatted(parameters, "titelBeitragszahler", natuerlichePerson.getTitel());
mapWithFormatted(parameters, "vornameBeitragszahler", partner.getName());
antragsnummerDruckdatenProvider.provideDruckdaten(angebot, parameters);
druckDaten.setKategorie(DruckKategorie.MANDAT);
druckDaten.setName(SEPAMANDAT_FO);
druckDaten.setBenoetigtVermittlerDaten(true);
druckDaten.setParameter(
parameters.entrySet().stream()
.map(entry -> new DruckParameter(entry.getKey(), entry.getValue()))
.collect(Collectors.toList()));
return druckDaten;
}
@Override
public DruckDaten provideDruckdaten(Angebot angebot) {
return null;
}
public boolean isResponsibleFor(
DruckKategorie kategorie, Map<String, String> documentSpecificParam) {
return kategorie == DruckKategorie.MANDAT;
}
@Override
public boolean isResponsibleFor(Angebot angebot, Map<String, String> druckstueckKeys) {
return super.isResponsibleFor(angebot, druckstueckKeys);
}
@Override
public void mapWithFormatted(Map<String, Serializable> parameter, String key, Serializable value) {
super.mapWithFormatted(parameter, key, value);
}
@Override
public boolean matchDruckKategorie(Map<String, String> druckstueckKey, DruckKategorie druckKategorie) {
return super.matchDruckKategorie(druckstueckKey, druckKategorie);
}
@Override
public boolean isAntragValidMarkedSet(Map<String, String> druckstueckKeys) {
return super.isAntragValidMarkedSet(druckstueckKeys);
}
}
用于测试此 class 的单元测试 Class 如下所示:
package com.xxx.services.business.druck.provider;
import static com.xxx.services.business.commons.Constants.DATE_FORMATTER;
import static org.mockito.ArgumentMatchers.eq;
import com.xxx.services.TestUtil;
import com.xxx.services.business.druck.DruckDaten;
import com.xxx.business.druck.DruckKategorie;
import com.xxx.services.model.Angebot;
import java.time.LocalDate;
import java.util.Arrays;
import org.assertj.core.api.SoftAssertions;
import org.assertj.core.api.WithAssertions;
import org.assertj.core.api.junit.jupiter.SoftAssertionsExtension;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.junit.jupiter.MockitoExtension;
@ExtendWith(MockitoExtension.class)
@SuppressWarnings("java:S2970")
@ExtendWith(SoftAssertionsExtension.class)
class DruckDatenProviderSepaMandatTest implements WithAssertions {
@Mock AntragsnummerDruckdatenProvider antragsnummerDruckdatenProvider;
@InjectMocks
DruckDatenProviderSepaMandat druckDatenProviderSepaMandat;
@Test
public void provideDruckdatenTest(SoftAssertions softly) {
// GIVEN
Angebot angebot = TestUtil.createAngebot();
// WHEN
DruckDaten druckDaten = druckDatenProviderSepaMandat.provideDruckdaten(angebot);
// THEN
softly.assertThat(druckDaten).isNotNull();
softly
.assertThat(druckDaten.get("antragsDatum"))
.isEqualTo(DATE_FORMATTER.format(LocalDate.now()));
softly.assertThat(druckDaten.get("rechtsformBeitragszahler")).isEqualTo("Privatperson");
softly.assertThat(druckDaten.get("namenszusatzBeitragszahler")).isEqualTo("Namenszusatz");
softly.assertThat(druckDaten.get("titelBeitragszahler")).isEqualTo("Graf");
softly.assertThat(druckDaten.get("vornameBeitragszahler")).isEqualTo("xxx");
softly.assertThat(druckDaten.get("nameBeitragszahler")).isEqualTo("xxx");
softly.assertThat(druckDaten.get("pnrBeitragszahler")).isEqualTo("xxx");
softly.assertThat(druckDaten.get("plzBeitragszahler")).isEqualTo("xxx");
softly.assertThat(druckDaten.get("ortBeitragszahler")).isEqualTo("xxx");
softly.assertThat(druckDaten.get("strasseBeitragszahler")).isEqualTo("xxx.");
softly.assertThat(druckDaten.get("hausnummerBeitragszahler")).isEqualTo("x");
softly.assertThat(druckDaten.get("iban")).isEqualTo("xxxxxxxxxxxxxxxxx0000");
softly.assertThat(druckDaten.get("bic")).isEqualTo("BIC00000000");
softly.assertThat(druckDaten.get("bank")).isEqualTo("Kreditinstitut");
}
@Test
public void antragsnummerTest(SoftAssertions softly) {
Angebot angebot = TestUtil.createAngebot();
angebot.getAntrag().setAntragsnummer("xxx");
// THEN
DruckDaten daten = druckDatenProviderSepaMandat.provideDruckdaten(angebot);
Mockito.verify(antragsnummerDruckdatenProvider, Mockito.times(1))
.provideDruckdaten(eq(angebot), Mockito.anyMap());
}
@Test
public void isResponsibleFor(SoftAssertions softly) {
softly
.assertThat(druckDatenProviderSepaMandat.isResponsibleFor(DruckKategorie.MANDAT, null))
.isTrue();
Arrays.stream(DruckKategorie.values())
.filter(druckKategorie -> DruckKategorie.MANDAT != druckKategorie)
.forEach(
kategorie ->
softly
.assertThat(druckDatenProviderSepaMandat.isResponsibleFor(kategorie, null))
.isFalse());
}
}
测试 Class 失败并出现以下错误,虽然我投入了大量的网络研究,但我自己也无法弄明白;因此,如果能提供有关如何解决此错误以及如何使测试 Class 再次运行的任何有用提示,我将非常高兴:
Wanted but not invoked:
antragsnummerDruckdatenProvider.provideDruckdaten(
Angebot(angebotId=null, angebotApiId=null, warenkorbApiId=xxx, provisionsbeitragssumme=null, antrag=Antrag(antragId=null, antragsnummer=xxx, antragsteller=Antragsteller(antragstellerId=null, gbs=00, partnerdaten=Partner(partnerId=null, natuerlichePerson=NatuerlichePerson(natuerlichePersonId=null, anrede=EINTRAG2, anredezusatz=null, titel=xxx, vorname=xxx, geburtsname=null, geburtsort=null, geburtsdatum=xxx, familienstand=UNBEKANNT, beruf=Experte), zustelladresse=Zustelladresse(zustelladresseId=null, laenderkennzeichen=EINTRAG51, postleitzahl=xxx, ortsname=xxx, ortsteilname=xxx, strassenname=xxx, hausnummer=x, adressmerkmal=EINTRAG0, adresszusatz=zusatz), onlineAdressen=[], telekommunikation=[], partnerTyp=NATUERLICHE_PERSON, rechtsform=EINTRAG1, name=xxx, namenszusatz=Namenszusatz, nationalitaet=EINTRAG0, pnr=xxx, arbeitgeber=null, branche=null, steuerid=null, telefonkontakt=null, partnergemeinschaftsart=null), brancheGbs=SONSTIGE, arbeitsverhaeltnisGbs=OHNE_TAETIGKEIT, vorhandeneAnbuendelungen=[xxx], sondervereinbarungArbeitgeber=[Sondervereinbarung(id=null, agpnr=null, agname=Arbeitgeber, agvereinb1=null, agvereinb2=null, agpnrLeben=null)], sondervereinbarungMitgliedschaften=[Sondervereinbarung(id=null, agpnr=null, agname=Mitgliedschaft, agvereinb1=null, agvereinb2=null, agpnrLeben=null)], bezugsperson=Bezugsperson(id=null, vorname=xxx, nachname=xxx, arbeitgeber=xxx, verwandtschaftsgrad=drei, gemeinsamerHaushalt=JA)), versichertePerson=VersichertePerson(id=null, gbs=null, partnerdaten=Partner(partnerId=null, natuerlichePerson=NatuerlichePerson(natuerlichePersonId=null, anrede=EINTRAG2, anredezusatz=null, titel=null, vorname=xxx, geburtsname=null, geburtsort=null, geburtsdatum=xxx, familienstand=UNBEKANNT, beruf=xxx), zustelladresse=Zustelladresse(zustelladresseId=null, laenderkennzeichen=EINTRAG51, postleitzahl=xxx, ortsname=xxx, ortsteilname=xxx, strassenname=xxx., hausnummer=x, adressmerkmal=EINTRAG0, adresszusatz=zusatz), onlineAdressen=[], telekommunikation=[], partnerTyp=NATUERLICHE_PERSON, rechtsform=EINTRAG1, name=Blöd, namenszusatz=null, nationalitaet=EINTRAG0, pnr=null, arbeitgeber=null, branche=null, steuerid=null, telefonkontakt=null, partnergemeinschaftsart=null), brancheGbs=null, arbeitsverhaeltnisGbs=null, compassInformation=CompassInformation(id=null, arbeitsverhaeltnis=ANGESTELLTE, berufsgruppe=BERUFSGRUPPE_1, risikoklasse=RISIKOKLASSE_1, xxx=xxx, xxx=null, berufsId=null), gesundheitsfragen=Gesundheitsfragen(id=null, anzeigepflichtbelehrungAnswer=false, beantworteteGesundheitsfragen=[]), xxx=false, xxx=xxx(id=null, mhsGewuenscht=JA, terminvereinbarungsart=PER_EMAIL, email=test@web.de, telefonnummer=Telekommunikation(telekommunikationId=null, telekommunikationArt=PRIVAT, telekommunikationTyp=FESTNETZ, landvorwahl=+49, vorwahl=xxx, rufnummer=xxx), zustelladresse=Zustelladresse(zustelladresseId=null, laenderkennzeichen=EINTRAG51, postleitzahl=xxx, ortsname=xxx, ortsteilname=xxx, strassenname=xxx, hausnummer=x, adressmerkmal=EINTRAG0, adresszusatz=zusatz), telefonischVon=xxx, telefonischBis=xxx, xxx=JA, xxx=aua)), bezugsberechtigtePerson=BezugsberechtigtePerson(id=0, naeheverhaeltnis=UNBEKANNT, artBezugsrechtErleben=WIDERRUFLICH, xxx=VERSICHERTE_PERSON, artNaeheverhaeltnis=null, gbs=null, brancheGbs=null, arbeitsverhaeltnisGbs=null, partnerdaten=Partner(partnerId=null, natuerlichePerson=NatuerlichePerson(natuerlichePersonId=null, anrede=EINTRAG2, anredezusatz=null, titel=null, vorname=xxx, geburtsname=null, geburtsort=null, geburtsdatum=xxx, familienstand=UNBEKANNT, beruf=xxx), zustelladresse=Zustelladresse(zustelladresseId=null, laenderkennzeichen=EINTRAG51, postleitzahl=xxx, ortsname=xxx, ortsteilname=xxx, strassenname=xxx, hausnummer=x, adressmerkmal=EINTRAG0, adresszusatz=zusatz), onlineAdressen=[], telekommunikation=[], partnerTyp=NATUERLICHE_PERSON, rechtsform=EINTRAG1, name=xxx, namenszusatz=null, nationalitaet=EINTRAG0, pnr=null, arbeitgeber=null, branche=null, steuerid=null, telefonkontakt=null, partnergemeinschaftsart=null)), beitragszahler=Beitragszahler(beitragszahlerId=null, gbs=null, partnerdaten=Partner(partnerId=null, natuerlichePerson=NatuerlichePerson(natuerlichePersonId=null, anrede=EINTRAG2, anredezusatz=null, titel=xxx, vorname=xxx, geburtsname=null, geburtsort=null, geburtsdatum=xxx, familienstand=UNBEKANNT, beruf=Experte), zustelladresse=Zustelladresse(zustelladresseId=null, laenderkennzeichen=EINTRAG51, postleitzahl=xxx, ortsname=xxx, ortsteilname=xxx, strassenname=xxx, hausnummer=x, adressmerkmal=EINTRAG0, adresszusatz=zusatz), onlineAdressen=[], telekommunikation=[], partnerTyp=NATUERLICHE_PERSON, rechtsform=EINTRAG1, name=xxx, namenszusatz=Namenszusatz, nationalitaet=EINTRAG0, pnr=xxx, arbeitgeber=null, branche=null, steuerid=null, telefonkontakt=null, partnergemeinschaftsart=null), brancheGbs=null, arbeitsverhaeltnisGbs=null, antragstellerGleichBeitragszahler=JA, inkassodaten=Inkassodaten(inkassodatenId=null, zahlungsart=LASTSCHRIFT, iban=xxx, bic=xxx, kreditinstitut=Kreditinstitut, mandatsreferenznummer=null, ibanErrorCode=null)), vermittlerdaten=xxx.services.model.xxx, beratungsprotokoll=Beratungsprotokoll(id=null, beratungZuSpaeteremTerminErwuenscht=NEIN, spaetereBeratungDatum=null, zusaetzlicheHinweiseAntragstellerVorhanden=NEIN, zusaetzlicheHinweiseAntragstellerText=null, beratenePersonNichtAntragsteller=NEIN, verhaeltnisBeratenePersonZumAntragsteller=null, beratenePerson=null, weitereTeilnehmerVorhanden=NEIN, ersterWeitererTeilnehmer=null, zweiterWeitererTeilnehmer=null, dritterWeitererTeilnehmer=null), aktionsnummer=null, aufnahmeort=EINTRAG0, kundeninformationMedium=DATEI_EMAIL, kundeninformationStand=null, nebenabredenVorhanden=NEIN, nebenabreden=null, endeSchulzeit=null, schweigepflichtentbindungErlebensfall=null, schweigepflichtentbindungTodesfall=null, kundeninformationEmailVersandt=false, antragValid=false), unternehmensKennzeichen=N, besondereAntragsaufnahme=NEIN, beratungsfragen=[Beratungsfrage(id=null, absicherung=null, type=BEITRAGS_DYNAMIK), Beratungsfrage(id=null, absicherung=null, type=SCHWERE_KRANKHEITEN), Beratungsfrage(id=null, absicherung=null, type=JAEHRLICHE_ERHOEHUNG_LEISTUNGSFALL), Beratungsfrage(id=null, absicherung=null, type=KRANKENTAGEGELD)], produktlinienfragen=[Produktlinienfrage(id=null, type=VERLUST_GLEICHGEWICHTSINN, ausgewaehlt=null), Produktlinienfrage(id=null, type=VERLUST_FINGERFERTIGKEIT, ausgewaehlt=null), Produktlinienfrage(id=null, type=VERLUST_INTELLEKTUELLE_FAEHIGKEITEN, ausgewaehlt=null), Produktlinienfrage(id=null, type=PLUS_EMPFOHLEN, ausgewaehlt=null), Produktlinienfrage(id=null, type=VERLUST_FAEHIGKEIT_EIGENVERANTWORTLICHES_HANDELN, ausgewaehlt=null), Produktlinienfrage(id=null, type=VERLUST_FAEHIGKEIT_AUTOFAHREN, ausgewaehlt=null)], risiken=[Risiko(id=null, kosten=Kosten(kostenId=null, gesamtzillmerKosten=4.45, amortisationsKosten=20.0, prozentualeAmortisationskosten=4.2, prozentualeUngezillmerteAbschlussAmortisationsKosten=4, absoluteUngezillmerteAbschlusskosten=25.0, prozentualeUngezillmerteAbschlusskosten=33.33, prozentualeEinmaligeGezillmerteAbschlusskosten=1.23, verwaltungsKosten=18.2, verwaltungsKostenLeistung=25.66, verwaltungsKostenBeitragsfrei=30.9, prozentualeVerwaltungskostenBeitrag=5, prozentualeVerwaltungskostenBeitragsfrei=5, absoluteAusProzentualeVerwaltungskostenBeitragsfrei=null, absoluteVerwaltungskostenLeistungsfall=400), risikoKennung=KRANKHEIT, tarifkennung=xxxx, tarifgeneration=2018_07, ueberschussverwendungssystem=VORWEGABZUG, leistungsende=2059-10-01, versicherungsende=2060-10-01, beitragszahlungsende=2058-10-01, beitrag=50, vorwegabzug=5, rente=null, versicherungssumme=24000), Risiko(id=null, kosten=Kosten(kostenId=null, gesamtzillmerKosten=12.45, amortisationsKosten=20.0, prozentualeAmortisationskosten=4.2, prozentualeUngezillmerteAbschlussAmortisationsKosten=4, absoluteUngezillmerteAbschlusskosten=25.0, prozentualeUngezillmerteAbschlusskosten=33.33, prozentualeEinmaligeGezillmerteAbschlusskosten=1.23, verwaltungsKosten=18.2, verwaltungsKostenLeistung=25.66, verwaltungsKostenBeitragsfrei=30.9, prozentualeVerwaltungskostenBeitrag=5, prozentualeVerwaltungskostenBeitragsfrei=5, absoluteAusProzentualeVerwaltungskostenBeitragsfrei=null, absoluteVerwaltungskostenLeistungsfall=null), risikoKennung=GRUNDFAEHIGKEIT, tarifkennung=GF, tarifgeneration=2018_07, ueberschussverwendungssystem=VORWEGABZUG, leistungsende=2056-10-01, versicherungsende=2057-10-01, beitragszahlungsende=2055-10-01, beitrag=100, vorwegabzug=15, rente=1000, versicherungssumme=null)], verlaeufe=[Verlaufzeile(verlaufzeileId=null, verlauftyp=GARANTIE_LEISTUNG_WERTE_OHNE_DYNAMIK, verlaufzeileIndex=0, verlaufzeileDatum=2021-05-15, beitragGesamt=10.1, renteGrundfaehigkeit=120.12, renteBeitragsfreiGrundfaeigkeit=11.11, versicherungssummeBeitragsfreiSchwereKrankheiten=13.13, stornoabschlag=5.0), Verlaufzeile(verlaufzeileId=null, verlauftyp=GARANTIE_LEISTUNG_WERTE_OHNE_DYNAMIK, verlaufzeileIndex=1, verlaufzeileDatum=2022-05-15, beitragGesamt=20.2, renteGrundfaehigkeit=230.22, renteBeitragsfreiGrundfaeigkeit=22.22, versicherungssummeBeitragsfreiSchwereKrankheiten=23.23, stornoabschlag=10.0), Verlaufzeile(verlaufzeileId=null, verlauftyp=GARANTIE_LEISTUNG_WERTE_MIT_DYNAMIK, verlaufzeileIndex=0, verlaufzeileDatum=2021-05-15, beitragGesamt=90.9, renteGrundfaehigkeit=920.92, renteBeitragsfreiGrundfaeigkeit=99.99, versicherungssummeBeitragsfreiSchwereKrankheiten=93.93, stornoabschlag=5.0)], vorversicherungsnummer=123456785, aktuellerStatus=UNVOLLSTAENDIG, bavGewuenscht=JA, vitaProtectGewuenscht=NEIN, produktEmpfehlung=GF, mitReduziertenAnfangsbeitraegen=DYNAMIK_UND_NACHVERSICHERUNGSGARANTIE, zahlungsrhythmus=VIERTELJAEHRLICH, prozentsatzDynamik=DYNAMIK_03, prozentsatzDynamikArt=INDIVIDUELL, berechnungsBasis=_RENTE, prozentsatzRentensteigerung=DYNAMIK_01, zahlungsrhythmusRente=MONATLICH, versicherungsbeginn=2020-06-01, mitPlusPaket=JA, mitSchwereKrankheiten=JA, berechnungsBasisBeitrag=150, berechnungsBasisRente=1000, gesamtBeitrag=333.33, berechnungsBasisDatum=ENDALTER, versicherungsEndalter=65, beitragszahlungsEndalter=66, leistungsEndalter=67, versicherungsDauerInMonaten=165, beitragszahlungsDauerInMonaten=266, leistungsDauerInMonaten=367, endalterMonatsgenauZumGeburtsdatum=JA, angebotValid=false),
<any map>
);
-> at com.devk.vpu.grundfaehigkeit.services.business.druck.provider.DruckDatenProviderSepaMandatTest.antragsnummerTest(DruckDatenProviderSepaMandatTest.java:70)
Actually, there were zero interactions with this mock.
Wanted but not invoked:
(...) -> 在 com.xxx.DruckDatenProviderSepaMandatTest.antragsnummerTest(DruckDatenProviderSepaMandatTest.java:70) 实际上,与此模拟的交互为零。
at com.xxx.provider.DruckDatenProviderSepaMandatTest.antragsnummerTest(DruckDatenProviderSepaMandatTest.java:70)
at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:725)
at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:149)
at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:140)
at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:84)
at org.junit.jupiter.engine.execution.ExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod[=14=](ExecutableInvoker.java:115)
at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke[=14=](ExecutableInvoker.java:105)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:104)
at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:98)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod(TestMethodTestDescriptor.java:214)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:210)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:135)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:66)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively(NodeTestTask.java:151)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively(NodeTestTask.java:141)
at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively(NodeTestTask.java:139)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1541)
at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively(NodeTestTask.java:155)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively(NodeTestTask.java:141)
at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively(NodeTestTask.java:139)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1541)
at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively(NodeTestTask.java:155)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively(NodeTestTask.java:141)
at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively(NodeTestTask.java:139)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35)
at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:107)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute[=14=](EngineExecutionOrchestrator.java:54)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52)
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114)
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86)
at org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86)
at org.junit.platform.launcher.core.SessionPerRequestLauncher.execute(SessionPerRequestLauncher.java:53)
at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:71)
at com.intellij.rt.junit.IdeaTestRunner$Repeater.execute(IdeaTestRunner.java:38)
at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11)
at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35)
at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:235)
at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54)
您的模拟匹配项可能不匹配。您提供了一个 'angebot' 但这是一个新对象,在实际调用期间与 'angebot' 不匹配。我认为使用 'any()' 之类的东西是更好的选择。
provideDruckdaten(eq(angebot), Mockito.anyMap())